{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Restricted Boltzmann Machine features for digit classification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Adapted from http://scikit-learn.org/stable/auto_examples/neural_networks/plot_rbm_logistic_classification.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For greyscale image data where pixel values can be interpreted as degrees of blackness on a white background, like handwritten digit recognition, the Bernoulli Restricted Boltzmann machine model (BernoulliRBM) can perform effective non-linear feature extraction.\n",
    "\n",
    "In order to learn good latent representations from a small dataset, we artificially generate more labeled data by perturbing the training data with linear shifts of 1 pixel in each direction.\n",
    "\n",
    "This example shows how to build a classification pipeline with a BernoulliRBM feature extractor and a LogisticRegression classifier. The hyperparameters of the entire model (learning rate, hidden layer size, regularization) were optimized by grid search, but the search is not reproduced here because of runtime constraints.\n",
    "\n",
    "Logistic regression on raw pixel values is presented for comparison. The example shows that the features extracted by the BernoulliRBM help improve the classification accuracy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Original Python Authors: Yann N. Dauphin, Vlad Niculae, Gabriel Synnaeve\n",
    "# License: BSD\n",
    "\n",
    "using ScikitLearn\n",
    "using PyCall: @pyimport\n",
    "using PyPlot\n",
    "\n",
    "using ScikitLearn.Pipelines: Pipeline\n",
    "using ScikitLearn.CrossValidation: train_test_split\n",
    "@pyimport scipy.ndimage as ndimage\n",
    "@sk_import neural_network: BernoulliRBM\n",
    "@sk_import datasets: load_digits\n",
    "@sk_import linear_model: LogisticRegression\n",
    "@sk_import metrics: classification_report"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PyObject BernoulliRBM(batch_size=10, learning_rate=0.1, n_components=256, n_iter=10,\n",
       "       random_state=0, verbose=True)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "###############################################################################\n",
    "# Setting up\n",
    "\n",
    "    \"\"\"\n",
    "    This produces a dataset 5 times bigger than the original one,\n",
    "    by moving the 8x8 images in X around by 1px to left, right, down, up\n",
    "    \"\"\"\n",
    "function nudge_dataset(X, Y)\n",
    "    direction_vectors = Any[\n",
    "        [0 1 0\n",
    "         0 0 0\n",
    "         0 0 0],\n",
    "        [0 0 0\n",
    "         1 0 0\n",
    "         0 0 0],\n",
    "\n",
    "        [0 0 0\n",
    "         0 0 1\n",
    "         0 0 0],\n",
    "\n",
    "        [0 0 0\n",
    "         0 0 0\n",
    "         0 1 0]]\n",
    "\n",
    "    shift(x, w) = ndimage.convolve(reshape(x, 8, 8); mode=\"constant\", weights=w)[:]\n",
    "    X = vcat(X, Any[vcat([shift(X[i, :], vector)' for i in 1:size(X, 1)]...)\n",
    "                 for vector in direction_vectors]...)\n",
    "    Y = vcat(fill(Y, 5)...)\n",
    "    return X, Y\n",
    "end\n",
    "\n",
    "# Load Data\n",
    "digits = load_digits()\n",
    "X = digits[\"data\"]\n",
    "X, Y = nudge_dataset(X, digits[\"target\"]);\n",
    "\n",
    "X = (X .- minimum(X, 1)) ./ (maximum(X, 1) .+ 0.0001);\n",
    "\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(X, Y,\n",
    "                                                    test_size=0.2,\n",
    "                                                    random_state=0);\n",
    "\n",
    "# Models we will use\n",
    "logistic = LogisticRegression()\n",
    "rbm = BernoulliRBM(random_state=0, verbose=true)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[BernoulliRBM] Iteration 1, pseudo-likelihood = -25.54, time = 0.21s\n",
      "[BernoulliRBM] Iteration 2, pseudo-likelihood = -23.94, time = 0.28s\n",
      "[BernoulliRBM] Iteration 3, pseudo-likelihood = -22.98, time = 0.28s\n",
      "[BernoulliRBM] Iteration 4, pseudo-likelihood = -21.98, time = 0.26s\n",
      "[BernoulliRBM] Iteration 5, pseudo-likelihood = -21.48, time = 0.24s\n",
      "[BernoulliRBM] Iteration 6, pseudo-likelihood = -21.06, time = 0.25s\n",
      "[BernoulliRBM] Iteration 7, pseudo-likelihood = -20.93, time = 0.28s\n",
      "[BernoulliRBM] Iteration 8, pseudo-likelihood = -20.49, time = 0.30s\n",
      "[BernoulliRBM] Iteration 9, pseudo-likelihood = -20.27, time = 0.28s\n",
      "[BernoulliRBM] Iteration 10, pseudo-likelihood = -20.18, time = 0.29s\n",
      "[BernoulliRBM] Iteration 11, pseudo-likelihood = -20.02, time = 0.31s\n",
      "[BernoulliRBM] Iteration 12, pseudo-likelihood = -19.73, time = 0.25s\n",
      "[BernoulliRBM] Iteration 13, pseudo-likelihood = -19.86, time = 0.25s\n",
      "[BernoulliRBM] Iteration 14, pseudo-likelihood = -19.64, time = 0.27s\n",
      "[BernoulliRBM] Iteration 15, pseudo-likelihood = -19.61, time = 0.30s\n",
      "[BernoulliRBM] Iteration 16, pseudo-likelihood = -19.40, time = 0.27s\n",
      "[BernoulliRBM] Iteration 17, pseudo-likelihood = -19.19, time = 0.29s\n",
      "[BernoulliRBM] Iteration 18, pseudo-likelihood = -19.16, time = 0.28s\n",
      "[BernoulliRBM] Iteration 19, pseudo-likelihood = -19.13, time = 0.27s\n",
      "[BernoulliRBM] Iteration 20, pseudo-likelihood = -19.08, time = 0.24s\n"
     ]
    }
   ],
   "source": [
    "classifier = Pipeline([(\"rbm\", rbm), (\"logistic\", logistic)])\n",
    "\n",
    "###############################################################################\n",
    "# Training\n",
    "\n",
    "# Hyper-parameters. These were set by cross-validation,\n",
    "# using a GridSearchCV. Here we are not performing cross-validation to\n",
    "# save time.\n",
    "rbm[:learning_rate] = 0.06\n",
    "rbm[:n_iter] = 20\n",
    "# More components tend to give better prediction performance, but larger\n",
    "# fitting time\n",
    "rbm[:n_components] = 100\n",
    "logistic[:C] = 6000.0\n",
    "\n",
    "# Training RBM-Logistic Pipeline\n",
    "fit!(classifier, X_train, Y_train)\n",
    "\n",
    "# Training Logistic regression\n",
    "logistic_classifier = LogisticRegression(C=100.0)\n",
    "fit!(logistic_classifier, X_train, Y_train);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Logistic regression using RBM features:\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.99      0.98      0.99       174\n",
      "          1       0.94      0.95      0.94       184\n",
      "          2       0.95      0.98      0.96       166\n",
      "          3       0.96      0.87      0.91       194\n",
      "          4       0.96      0.95      0.96       186\n",
      "          5       0.90      0.92      0.91       181\n",
      "          6       0.99      0.98      0.98       207\n",
      "          7       0.94      0.98      0.96       154\n",
      "          8       0.89      0.90      0.89       182\n",
      "          9       0.90      0.92      0.91       169\n",
      "\n",
      "avg / total       0.94      0.94      0.94      1797\n",
      "\n",
      "Logistic regression using raw pixel features:\n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.86      0.94      0.90       174\n",
      "          1       0.55      0.53      0.54       184\n",
      "          2       0.79      0.86      0.82       166\n",
      "          3       0.78      0.73      0.75       194\n",
      "          4       0.86      0.83      0.85       186\n",
      "          5       0.79      0.77      0.78       181\n",
      "          6       0.89      0.89      0.89       207\n",
      "          7       0.85      0.93      0.89       154\n",
      "          8       0.65      0.60      0.63       182\n",
      "          9       0.71      0.72      0.72       169\n",
      "\n",
      "avg / total       0.77      0.78      0.78      1797\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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oZTCM888g/Hjx8NxHBNH9WPSo0cPXHnllVBK4d577z2nc2zatAmO4xhVfjR+/vOfIz09Henp6T+aDS8mXmpKnfVd1/7+NAbhu+++UxdffLFyXdfj766Undrm+eefN/tPnz6tfvaznynHcVRhYWGZZNau1CkpKertt9/2lK9Zs0atXbvW/E3dorlf/axZs1RycnJYt+hIaTOipeLIy8sL6SYZyS3673//u3IcR1WpUkXt3bvXKissLAzpFr1v3z7j2UbjNpTylzImlBdVSUmJkf+OO+5QR44c8Ry3e/du65kq9X0cTrh4gnDybN++3biNcq8+pZT6z3/+o2bMmGG5Z2uuv/565TiO6t+/f9h75AwaNEg5jqMuu+yykJ5hJSUl6tVXX/V4BPbq1Uu5rmt5AG3fvt14qk2fPt1zrvz8fOW6rvrqq69CyqK91EaNGhVW3l/+8pcmbQl11S0uLjau7aHqvax95eTJkyopKUklJCSogwcPhpRFh0lkZmaq999/P+RvFi9erGbPnm3t067711xzjeVRtn37dtWwYUNzDz+mW3RWVpZyXVf94x//CHsOHd+lY7zCeS5GIppbtFJn49p07NJ//vMfqyxaHM6ECRPM+d98802rjHup+SFmbtHLly9X7du3V4WFhaqwsFBlZGQYl2e9r7CwUO3Zs8dz7BNPPGEaRffu3dXQoUNVzZo1leu6qmnTpiaQjTN16lSVkJBgBpdhw4apevXqmUCmzZs3l/U21EMPPaTi4uKU4ziqSZMmVjCb4zghAz/j4+NNPAoN/HRdN2Sg2vkecHTgZ9euXdU111yjWrRooRzHCRvEt3nzZhPkyAM/3f/lWQoX+FnWAUepsx1EvyyrVaumunbtqoYPH64GDBhgggazs7OtY3TjL+uAo9T37uCNGzdWI0aMUNdff7268847lVJn254eiLt3766GDx+uBg4cqPLy8kyMWFkDP3v27Klc11VJSUmqXbt2aujQoWrIkCGqXbt2JjZr/fr15pi//OUvynEc1bx5c4/L9/vvv69c11VpaWmeAex3v/udcl1XZWRkqKFDh6rrr79eXX/99cY92M+As2XLFlW9enXluq6qVauWGjRokOrXr5+qWrWqysnJMYNuqHova18ZPHiwcl1X1a5dW11zzTVGXsrTTz+tEhMTleM4qkGDBqpv374mEDczM1O5rqvuuusu65g1a9aYMh34ecUVV/xogZ8VK1a0Aj/1Mxw0aFDEc+hYJdd1z9nt3s+Ao5RS1113nXGpp2i36FatWqmRI0eaf/3791cNGzY05x45cqTnnIEecObNm2desuH+xcXFha20uXPnqssuu0ylp6ebiNZ77rknbLCaZvny5WrQoEEqMzNTJScnq7p166qxY8eGjCnxy+LFi9Xw4cNVbm6uSkpKUunp6ap169bqrrvuUjt27PD8/osvvlBDhgxRNWvWVImJiSojI0NdeeWVau7cuSHP72fAiYuLizjghKpL+oL/5z//qQoKClRKSoqJoP/888/D3vPBgwfV3XffrS644AJVsWJFlZqaqtq0aaMeffTRkAFl+nn36NEj7Dl1nE4ojh49qh577DHVsWNHVb16dZWUlKRycnJU+/bt1Z133umRVc9w7r///pDniyTPjh071IgRI1ROTo5KTExUruuq/Px8pZRSmzZtUvfff7/q2bOnysvLUxUrVlRpaWmqVatW6u6777Zij8rCG2+8ofr27auys7NVUlKSysjIUC1atFBjxoxR06dPN7Ot+fPnq/j4eFWpUiUrUJLy29/+VrmuqwoLC61Z2vHjx9Wdd96pGjZsaGbTtF3oTAM8mp+zbds29bOf/Uzl5eWpChUqqLp166pbbrlFffvtt1HrvSx95eDBg+qmm25SeXl55qUdqn2sXr1a3XjjjapRo0amLdavX1/16dNHPfPMM2r37t2eY3bs2KFGjx6tsrOzVXJysqpfv776/e9/r0pLS6P2p1DQPrpy5UrVr18/lZGRoSpUqKCaN2+unnzyybAxgJqjR4+q+Ph4FRcXpzZs2OD72hQ94ER6dyp19hlWqFBBxcXFWTNAPQDwf0lJSapWrVpqwIABIWfPSn3f537+85/7lvdcBxxHKcm29/8b7v/ya0Vat0IQhNgwceJE/PznP0fv3r1NzkghNDLg/H+IDDiCEAxKSkrQokULbN26FbNnz8bFF19c3iIFmpi4RQuCIPxf4rHHHsOqVauwcOFCbN26FX369JHBxgcyw/n/EJ32oqwuwIIg/Dh0794dn3zyCdLT03HFFVfgb3/72zmn1vkpIQOOIAiCEBN+csk7BUEQhPJBBhxBEAQhJsiAIwiCIMQEGXAEQRCEmCADjiAIghATZMARBEEQYoIMOIIgCEJMkAFHEARBiAky4AiCIAgxQQYcQRAEISbIgCMIgiDEBBlwBEEQhJggA44gCIIQE2TAEQRBEGKCDDiCIAhCTJABRxAEQYgJMuAIgiAIMUEGHEEQBCEmyIAjCIIgxAQZcARBEISYIAOOIAiCEBNkwBEEQRBiggw4giAIQkyQAUcQBEGICTLgCIIgCDFBBhxBEAQhJsiAIwiCIMQEGXAEQRCEmCADjiAIghAT4stbgKKiIsyaNQt5eXmoUKHCeb1WaWkptm7dil69eiE9Pb1cZQmaPEGSJWjyBEmWoMkTJFmCJk+QZPEjT0xQ5cyUKVMUgJj+mzJlSmBkCZo8QZIlaPIESZagyRMkWYImT5BkiSRPLCj3GU5eXh4A4N5770WdOnWwb98+qzwlJcVsV65c2SqrVatW2PPS85w+fRoAsGXLFtx7773mmuFkGTt2LHJycgAACQkJpvzIkSPW79etW2e29+zZY5VVrFjR+rtVq1ZmOzU1FQCwa9cujB8/Pqo8Q4YMQUZGBkpLS63yTZs2me0NGzZYZbt37/ZcT1NYWGi28/PzAZz92po2bVpUWR5//HHUr18fALBs2bKw16dlVapUscr08ZquXbt6yjZs2ICbbropqjxTpkxBkyZNcODAAav8888/N9uzZ8+2yr799luzfcEFF1hlffv2NdstWrQAcPY5jxgxIqos6enppr3Q9te5c2fr9z169DDbx44ds8o2btwY9u9Dhw4BAI4fP45du3ZFleeRRx5Bfn4+6tata5Urpcz20aNHrbK4uLiwsn333Xdm++TJkwCAzZs3Y9y4cVFlufzyy5GWlua5RiRc19b4nzp1yvqb3ofe3r9/P2bMmBFVnn79+iE9Pd0ji+M4Ibf531wW/Y6hFBUVYfr06VFlueeee1CnTh3Pefm7kPbpRYsWhTynpn379ma7WbNmAIAdO3bgkUceCStPLCj3AUdPJevUqYNGjRp5Xo50kKlWrZpVxl9clF27dplt3jjCTV/1/pycHPMiTkxMNOXFxcXW7+lLjnfOSpUqWX/Xrl3bbFetWrVM8mRkZCAnJwclJSVW+f79+812UlJSyHMA3g5O6zE7O7tMstSvX980YHp9/TLU0AGXfyjUqFHD+rthw4Zmu3nz5mWSp0mTJigoKLAGEcD+AOD1TV+yGRkZVlmjRo3MdkFBQZlkSUhIMM+Bviz59WmHpy9xwNvG6EvmxIkTZZInPz8fTZs2RZMmTaxy+qLmzy0+/vtXApeN1ltZZUlLS0NmZqbnGpHg7VYPcpozZ86YbXpPfuRJT09Hdna2Rxa/Aw6XJdSA41cW/e4D7HqlH9v8+vw9yalZs6bZ5u/JWKjvwlHuA47mv//9L06cOOF5cMePHzfb/CVO9ZC8wdEv7LVr1wI4O8L7oVGjRubLl15zxowZHpk127dvt8o6duxo/Z2VleVSyaoWAAAgAElEQVS5TqRBgrJjxw6UlpZ67pEOqnwW0a5dO7NNOyZgd+SDBw8CAA4fPuxLljlz5piZHX1W/IuLDo783vlzpPWoZ23btm3zJc/27dtRqVIl7Ny509r/wAMPmG06EwXsrz8+qNCPiPHjxwPw32727NljXgr0JT9w4EDrd7RtLF++POz1AfsZb9682ZccmpMnT+LEiROe49avX2+2+QyHtkn+YqIfJ/qjhb8Uw1GpUiVzDG2rfNZO2yofDCLNePR9+G3HNWrUQE5OjucjNtSsKdTfvE/R+9DP0K8sK1euNLMZeo/z5s2zfkf7BG+T/Dlu3brVbG/ZsgWA/YFYXoiXmiAIghATZMARBEEQYkJgVGpFRUVISEjw2FuobYRP8anenut7taoI+H5KyfX84ahSpYoxcH7yySdm/9dff239jtomqI0G8NopqE5V61+5HjgciYmJSEpKQlFRkbVf25kAoEGDBlZZcnKy2eaGaHpdrQqgqstInD592jwjWjdcNqp+4fpm/luqDtNyc4NpNHmef/55az9VKVC7DAA0btzYbFMbHWCrArUKgts5wpGYmGhUIp06dTL7uX3vww8/NNtffPGFVabVv6Hk0baf48ePW7adcBw+fBgHDx7Ev//9b2v/W2+9Zbap/Qyw7XvcEYbanrp16wbAdlyJBLXhUHXQl19+GfYY/my4LYyqanX/8tuntA2H92mqiueqX/1OALz2ZPq3Vsf7VZnv3bvXqOhWrVpl9vO2QOEqdK5+pA5O06dPB+C1ZZcHMsMRBEEQYoIMOIIgCEJMkAFHEARBiAmBseGUlpaipKTEo6elboLUnROw/dK5vpW6JGp3Qh7jEI7Zs2cbV9oPPvgg5PUAW//NXSi5rDSAVOuwuS0jHNWrV0dmZqbnHqmeltpsADuGguviKdrWxI8Px5YtW0zdUjsZl43qr5csWWKVcfdWav/Sdjq/dpMtW7bAdV2Pm6iOFQKADh06WGXU/vHqq69aZTSYWOvF/T6n3NxcIz+95xdffNH6HW0r2q6h4YGooWIvjh496suGs3nzZpw6dQoff/yxtZ+GE/DrUdm++eYbq2zNmjUeWfzIAZztD7q9UDdt/tyobNRmAgArVqyw/qb2re7duwPwb6dduHAh1q1bZ90TPyd/NjoYHPD2qY8++shs6/YWqd9RdP8G7DqmtkbAttPy902kmCEdsnH48GGPzTDWyAxHEARBiAky4AiCIAgxQQYcQRAEISYExoaTkJCAxMREj960evXqZpv7/M+aNcs6nkJ99Nu2bQvgrE56/vz5UWXZtGmTsVPQ1B3c956mIaHJIgE7DgSApUfXuliejiIcp06dwsmTJz3pNGisCrcz0JglHgdD41Lq1asHwH8qmUqVKhk720UXXWT2U3sOl4c+Q8AbQ6CTZALeJKDRKC4uRlFRkScnHK1bnnZo5cqV1vEUasvS+nyetDUczZs3NzYI+vxpvBRgxyhFSw1DbZr6+XN9fTi++OILbNy40XMNakObO3euVUZtWPw50bgzXYd+bW379+838tP4mqZNm1q/a9Omjdnu16+fVcaf1YQJE8y2tjfxdhgOfS56PcCOmeJxK9ddd53Z5umannzySbOt68avzTg/P9+0EWo327t3r/U72o95e+f2Liq7jkPk74/yQGY4giAIQkyQAUcQBEGICYFRqa1YsQKpqaket2iaPp67CdIU+Nwdkqq/tOpn3bp1ePbZZ6PKkp2dbVQLVG1GVTGArRrgafWHDBli/U1ThGu1y6ZNmyKm9tAUFxcjPj7e405MXY+52oSqP3hGZKpS07/j5w5HvXr1zNoddFrP1/+h7qU8fQif2tN0JFqlwFPjh6O4uBgpKSkeF1Sazoev/6HTsgDeeqOyvfPOOx75ItGmTRuz9gxVzfHlGWgKel43POs2VRHpc/qV5/Dhw1BKYfXq1dZ+msaIq2Lo9fgzpa7vWs3Il8wIB1XF0uzd1H0dsNsmT9fEU73QZ6XTEPlVf+p3Dc+kTe+Rr7dF3aIjhQHo9DQ8pVE46tevb9zTqVs0f9/QMq6mpqmzALsedJsSlZogCILwk0EGHEEQBCEmyIAjCIIgxITA2HC0LYOn9KY2ndzcXKusdevWZpuvFEqP0zprvzrMw4cPG9sNdW/l19AuxQDQsmVLq6xLly7W39SOotN5+E1fHh8fj4SEBI97M62PSKlpuFsuTSWj3b/92nBc1zW/pbYRvhwDXXKAL4/A7RZUV+3HpkU5fvw4SktLPbp4aifRdhUNdYXlrqvU9V67/PptN9p9HbDtRFy/Tlc45bZHbhug19aurn7TzDdq1AiZmZmepSe0myzgXWGUpprh19G2O+D7tC9+64bacGjapwULFli/oymB+Aq7PCyCpvK/+OKLAfhf1TIpKQnJycnWOYDIS5PPmTPHbPPlUKidrLCwEMBZOwpfiTYUdOkG2qe5DYv2G75S7OLFi62/qY1H99Njx455wjVijcxwBEEQhJggA44gCIIQEwKjUtNuv9ytkUYy8xU/6ZSfq01oNLZWm/h1mTxy5IhRUVFXSB5dTF13uWqEr8BH3U21iolHwIejf//+aNKkief+qRqMuxHTzAtc3UbrStcTX10xHF27djXqQ5rZd9euXdbvQqmCNDzrL81yoLMOfPfdd5bqKRxt2rRBgwYNIrqpchdS+iy4bNSFWasiSktLfaki6tSpYzKI02zlPKMyVfdxVSR34aaR5zpE4MCBAxFXg6Ty1K5d22rDgH3P3C2cuvLyjMRUjaTLdu7c6XG7DgVVN/bp08fs5yrUr776ymxT92nA60Ldv39/s62fsd92rFV8vXv3tvZT12Oe8Z22W96mOnfubLZ1tuhvvvkGS5cujSpL5cqVTRhHq1atzH6urhw8eLDZ5qpg/luaJUKrInfu3ImnnnoqqjznE5nhCIIgCDFBBhxBEAQhJpS7Sq20tBTA2Sn6mTNnPJHLVFXDI3epGkWfR0NVajrJpfbA4b/l56AqF7rNPbkiqR+4yoN6A+kElVqlFk0e7VXEvdqoPLxuqEqPqxnoPel60vJGk4V6nNFsDlylSJN3cnUbV/9RFY8u0/cTTR5dh9wbiN4zVW/xv3nySVqmr6G9vKLJQtVutG3yZ0MzBXDZuPqNqoG1SksfE00e7XHFf0e9Lbmalnq0+VGp6eceTRba/uk987ZAVUPcK5S/G2jyWi23bnfR5NG/4/VP6ztSRgeuiqXn0WpQv7LQdwXd5gl16TW4eYA/K+rRqvtGtGcVE1Q5M2XKFAUgpv+mTJkSGFmCJk+QZAmaPEGSJWjyBEmWoMkTJFkiyRMLHKXY0BhjioqKMGvWLOTl5Xm+tn5stPG3V69elsG7PGQJmjxBkiVo8gRJlqDJEyRZgiZPkGTxI08sKPcBRxAEQfhpIE4DgiAIQkyQAUcQBEGICeXupSY61WDIEyRZgiZPkGQJmjxBkiVo8gRJFj/yxIRyc1f4H+I1Eix5giRL0OQJkixBkydIsgRNniDJEkmeWFDuMxyeyoNnRKarfNL0EYCdrZlnxP3ggw/M9hdffAHgrF//sWPHPNfkstDVNWkaEp69tXv37mZbr9in4TE777//vkeeU6dO4ejRo1Hl6dmzJ6pVq+ZJlxMJRXxBFPMLoTEEWs6DBw/io48+iirL888/b1ZlpBmaeTwLTZlCnxPgXQHz6NGjZlvHGq1btw4jR46MKs/YsWORk5PjSa9CYzR4/Iauf8Dbbi655BKz3bVrVwBn4yomTJgQVZbJkyeb9krjTmhMGIc/U5qSCLDjiXTZunXrMGLEiKjyDBw4EOnp6Z7MxhQe60L/5nEoNEWSvqd9+/Zh2rRpUWV56KGHTEolWh+8bdIYEZqeBfDWDe2bWtYtW7bgrrvuiipPhw4dUKVKFU+MFL1HPuugZTx+h55Hy3no0CF89tlnUWUZNWqUSZtFs13zPkXT2fC64X2Kvn90SqTdu3fjhRdeCCtPLCj3AYc+VMdxPJ0j0pKvdADgwUw0KJGfM9z0Ve+nKfhp5+BL7tIllukS0qGuSXMv8ZdMNHmqVauGjIwM33miADuAjndq+iIpa900atTI5HuiLwCe5p52AD4Y02cD2J2X532LJk9OTg7y8/M9aenpi5O/qOg988GAysbz80WTpXHjxmYZir1795rySEs/8LbAg3vp3/z5R5MnPT0d2dnZET9UeAAjrTf6Qgfs9s/rLZosdevWRZMmTQDY9cFzgNGPA778Nb9/+rHAPxyiyVOlShWkpaV5Ak/pPfL+Tj+ieJui5+HPMJosWVlZZskQemykQG+ey43/Tds4Xx4jFuq7cJT7gKOpWrUq4uPjPRXXqVMns807Lv2q5S88Gk3Pv0aiUalSJdOg6IDXo0cP63e0s9Cv5lDXpGuQ0Ch8P2RlZSEnJ8fTAaZNmxb2GJ1EEvAO1LRT6/XO/SY2/de//oVPP/0UgJ1dgCcT1C8XwPvc6EANwEpwqJ8pj7gPx5tvvolKlSp5rkFfTryD0fWAeEaI6dOnm23dpvy2H5pskibl5Gv10DVn+CyCysbRcvDzhaNatWqoUaOG5+uXPv9ly5ZZZXRtIp70k87o9Re93zWdMjIyzPnoy/nhhx+2fkfbAq+LsWPHWn/T9Xl0//O73otOJsoHDtpWIs2+eB+mfZNny4jGtm3bzLnpMZHW9uGDMU8sTLN76D7Fs4GUB+KlJgiCIMQEGXAEQRCEmBAYlVp+fj4qVapk1pLQUFXJ559/bpXR5WG5XUAbfIHvl4otLi7Gxx9/HFWW2rVrG+eFSy+91HMeDV3mleu0uRqDLjGtXRIPHTqEhQsXRpWnsLAQTZo0wbhx46z99F6ougOwVVyRbAh6zY9IiQophw8fNmoHeg2ui6eqCW5fo8sIA/Zz1YkPuYo0HKdPn8apU6c8zib0WXFVJLW3cdmoTUOrTbiePxypqanGmBtpzR16Pm6X4O2Iqh+18ZfbVsJRv359NGzY0Fo2GbATsHLDNNX96+tpLrzwQrOtbT18zZhwJCcnm+dAHXq4Qwe9f2574u2YLsdMnYv8cOLECRw7dszTbmh74PVG64ofR/uPVjP6XQr86NGjxnZJ+xRXc9Nr8nWM+LOi59F9yW8fP5/IDEcQBEGICTLgCIIgCDFBBhxBEAQhJgTGhtOhQwfk5ORYdhnADgrkgZfU9Ze7IFI9+ciRIwGcXdvbjw2nsLDQ+K5TWwxd7xywYxYuu+wyq4zrVP/73/965N6xY4cvG46OfaG6d8B2GR86dKhV9s4775ht7kZL7Vtt2rQB4N+eRHXx1DbCbRFU//zRRx9ZZXyteqq31+7EfvXNWVlZqF69utVOANs9lgfJUVl5rA11hdV2qEOHDplF8yKhXW0B222WuhoDtn6dpxjhNg0qD18QLhpLlizBzp07jRu7hto72rZta5VRGwa3U1Db0dtvvw3Av6vtmjVrjE2DuoXTAF0OD0rlz4C2P13vfu0mu3btwsGDBz32PRq+QGOpOPn5+dbf9N3E3amjUVpaap47daenbt+AbRfktkf6fgFsO50OMeD2uvJAZjiCIAhCTJABRxAEQYgJgVGp6ak5VRPxv6kKDbBVI1zdRFVz2oXQb0qHo0ePmuknVdXx42kEP4/05dHp27dvN9ta3Rdpyk45efIkTpw44XH9plHSK1assMqoqoNHg9MoZa069Js2x3Ec455Kj+GR15HyrHFVTfPmzc22dq/2qzaKi4tDfHy8pW4Avl/HPdT1dS44wKvSomocre7xuwZ8cXGxqQfq+k1VSICt4uOut7zd0HrVrrM0ijwSCxYsQEpKisdluGfPnmabu3zTc3P39ffee89sa9UPVwGGY/PmzUbdRfsqj6anrtDaRV4zc+ZM62+aaUS3ab91U1JSglOnTmHTpk3WftqnBgwYYJVRFRdXBdKwAP2cIuXQo9BUWtTVm0PfRYsXL7bKqCoQsFXFOj/gzp07TWaR8kJmOIIgCEJMkAFHEARBiAky4AiCIAgxITA2HA3XYVPdKHenpZmcuXsj1cVqnTG1o0Ti9OnTRpdPU33wa1A3TW5D4jYImpajadOmIX8Tjm3btiElJcWzjgV1heRpQKi7K7dvfPXVV2Zbp+fxm9l2y5YtxiZC3T+3bdtm/Y66k1ObCeB1KaVod1u/toG0tDRkZmZ67CzUTZrfG7Wp0DYE2M87VAbfSMycOdNkO6a2IJ7Zl7YFfp/c9ZfawrQNk9s2wtGxY0dkZ2d7si5T9/7Zs2dbZTRdU/v27a2yIUOGmO0+ffqYcw0aNCiqLAsXLjS2K9ruucs6rWte7zyNDnV9167mfp9Veno6UlJSPG2Rpu/p3bu3VUbrkT83mt1cP9+NGzda62CFY+PGjcY+TN93kWyv3C7Hn1XLli3Ntn4XfP3113jiiSeiynM+kRmOIAiCEBNkwBEEQRBiQmBUanXq1EFubq5H/UBVVTx6P5Lahbrsavdlv9PtFi1amKk2XYGSLwpGVVVczcEXr+rVq5fZLiwsBAB8+eWXmDBhQlR5Vq9ejaNHj3run8rG3bLpdJxHX4daqtbv8tVHjx41aieaTYCrpugqg1wVyV1RqRqJL2QXjQYNGiAvL8+zcF9mZqbZ5s+GupByFS6tRx09fuDAAc9CbaFYu3atuVeqKuLXp3XdrFkzq4wvo04zW+usv36j6devX4+9e/d6Mg1QNR13y9aruQLAr3/9a6uMZrPQKlS+Qms4duzYYVyJaXvgma/p33QRP8CrYqLqT65uj0ZWVhaqVavmuQZVBfO2Qds4V8VRdZtW3UdaQI1CnwftmzTDPGC78PNVdHmWfapy0+eXbNGCIAjCTwYZcARBEISYIAOOIAiCEBMCY8OpVKkSqlat6skQS1N7cBsKhadmoXpirfv164bcqFEjoyOl7tU0kytg69+5Xp2nTKHZZPU5eaqacGzbtg3Hjx/3pNahOm2u36ZpNag9A7D1z9ouVFRUZKUKCUefPn2MezZdlZPbaWh9fPnll1YZdb0F7BQ/2oZy8uRJXzrwyy+/HAUFBZ6UJtT2xzNJU/d4bl+h9aj1+Tt27MCsWbOiyrJr1y5jn6H2Pd4WaLvhNhCeToU+K11vftMQrVu3DomJiZ52T20R3C2ZtnfepujKrNouwFOqhKO4uNicO5K9hdoe+AqfvB3TutMpeoqLi32tQpqRkYHMzEzPypn0mvzeaBuj9cRl07Zlv3WTl5dn7oXef8eOHa3fUTdw3jf46qD0t9reFun9GStkhiMIgiDEhHKf4ejgunDBbNSzLJJ3Dv/ioF8/ukx/oYRLxqj3Uy8q6lHEvypokBafmfF1QuhXtj6n9nyKJo++Lvfoodfnsx86w+Hrc9Df6hmk/iKPJgt9TjQpJv9SD5UEU8O9C+l96Wes/48mj65DXt+hkqVqqGcWl43OHvT96RlYNFl4G9Dwdku/Rnm75+tBUa8lfa/6yzmaPOHWiKEzHu65RJ8N9yakz1snR9XyR5PFr2cd7e/03gHvzI7OwPRvdd1Gk0fPzvkzo/2dJ9+k7xju1Un7t76G3/cNfR70nmkCWsBuq9RDD/DOGqnWQMuh+4TfZLTnBVXOTJkyRQGI6b8pU6YERpagyRMkWYImT5BkCZo8QZIlaPIESZZI8sQCR6kyLk/3I1NUVIRZs2YhLy/P9/IB50ppaSm2bt2KXr16efTqsZYlaPIESZagyRMkWYImT5BkCZo8QZLFjzyxoNwHHEEQBOGngTgNCIIgCDFBBhxBEAQhJsiAIwiCIMSEcneLFiNeMOQJkixBkydIsgRNniDJEjR5giSLH3liQrn5x/0PcVMMljxBkiVo8gRJlqDJEyRZgiZPkGSJJE8sKPcZjk6TcsUVVyAtLc2TloIG7fEU/PSrgKdWoeiyoqIivPvuu56VM7ksdevWNeemwW+5ubnW7+lyAS1atLDKeDoRusqmTp9RUlKCtWvXRpVnyJAhyMjI8CwBQOGBdTRIjwes0nQmOnhu3759ePvtt6PKcvvtt5t6oNfkX0w0zTuXjad9DxUUuH37djz00ENR5bniiiuQnp7uOQdNWcLbBg0u5OlTaCCgDor0226uvfZak+KE3j8PdKVpd+bNm2eV0WBewF65Vac9+fbbb/Hmm29Glee5555Dw4YNrRVOATvwjwdT0lQ6PO1LqOe0bt06XHfddVFleeihh8y5adAkD2Ckz4ovVcIDn2mQpC7btGkTbr/9dl/PKisry+onQOSgSNo2+IyEyq3L9uzZg8mTJ0eVpUWLFkhNTQVgBwXzpRPokif8mfIAZlrHuo0fPnwYixcvDitPLCj3AUc/nLS0NGRlZXny/dAXAl/zhHYI/jJWxNubl4Wbvur9FSpUMOem1+cvLvripuu/AN6GS/Mq8ZdcNHkyMjKQk5ODqlWrhvwd4I0Yp7LyiGnakfm1o8mSm5tr1mih1+QfA/RZcdloDjYgchR6NHnS09ORlZXluQZ94evOrKHPhj8LKgt/wUWTJTMz0wzGNE8ez3NFX5Q8QwYfcOh5+BpL0eRp2LAhWrVq5Rk46ADI86XRdVZ4v/khzyk/P98srU7vmQ849Jo8dxr/iKN5FnlZNHmysrKQm5vrqRuaMYD3G3r//Djaxnh7iyZLamqqeZfQ9xZf/0qv6wV41/bi7Z/Wsd/3TSwo9wFHs2nTJuzfvx9Lliyx9rdp08Zs03W6AbtzfP3111bZm2++abZ10k3+ZR2OoqIi81v6sBo1amT9jj50viATXyCJpl557bXXAHhfLuFo2bIlGjZsiK5du1r7aYLImTNnWmX//ve/zTZN8wIAzZs3N9t63Xa/qUcmTZpkOtuVV15p9rdr1876HX05fvDBB1bZJ598Yv1NvzLr1KkDAJ5knOF48cUX4TgOrrrqKmv/L37xC7PNnw1NJvree+9ZZfSZ6i9BvwtXxcfHm45Onw2fxdAXJX/h60SLGvrsLrnkEgDeASwcr732GubNm+d5OdEBj3/tUtn4C48uFKYXzQuXkoqzdetW05eo/LwP0I84/uLms2j6kaM/sPwuCLd9+3YcO3bM8zKmyTMvvPBCq4zOGpYtW2aV0feP7ks83VI46OJ09L2hB2gN/YiKlMqGo2dmkRasjBXipSYIgiDEBBlwBEEQhJgQGJXamjVrkJCQYKl7AKB9+/Zmm+tUe/bsaba5Cmvp0qVmW69lEi6bL6dixYpGz3ndddeZ/dy+RNUx3bp1s8pGjBhh/X355Zeb7alTpxp5uJ0gFAUFBSgoKPCsPz9nzhyz/fTTT1tlK1euNNvc+ErVDlotwdeMCUe1atWMLYlO+XndfvHFF2abq9C4iok+V22zKMv0XyllPSfAVhtyWwBVrVLVFwBLpXv99dcDOGvknzx5clQ5vv76a6NiompCbt/q1KmT2eZrBdF2C9g2jhUrVgDwGojDcfToURw6dMhzj1RFyNWFVEXG1dRajQZ874jCMzqHY9GiRcZZgqrKqF0CsFVs/Nz8vnX2bOB71SBXH4fDdV24ruuxxVA1YkFBgVVGbX98TSf6nLQjhl/1nuM4pg9QFSuvf9qmdFvQcPUdteFo1SB3kCgPZIYjCIIgxAQZcARBEISYIAOOIAiCEBMCY8NJTExEUlISOnToYO2netxPP/3UKuvVq5fZ5i7T/fr1M9szZswA4N8NOTk52dhwqE6YB6VS+ws/N11THLDjcLS+V/lcGeKtt97CF198gc8++8zaP2XKFLOdnZ1tlVH3zki6eK2L9uvempuba2wi9J6oGzYA/Pe//zXbCxcutMq4vYc+c23D4at0huOmm25CzZo1PfX/7LPPmm0eQEdjNrh9hdp7tF3Qr+2vadOmJg6HxpNwt2QaiMvdWbndgMZ3aRsIt8mEIykpKaQdgdoJeFAwtWFx2WhsFa+3aGzcuNG0sZEjR5r9OmRB8/nnn5ttHqOj4780tF61O7dfm9KRI0eQlJTkCQegq2zy1VepXVSHNmhoe23YsCEAb7xZOLQ9CbBtn9xmTJ8bt2frcAINfbfw35YnMsMRBEEQYoIMOIIgCEJMCIxKrXr16khJSfFE8NIcZFzNolVlADwuw9Rtkas0opGcnGwil2l0cceOHa3f0bQjf/vb36yyl19+2fqbuuJqdVdJSYlH3RWKWbNmITU11ePC+stf/tJs81xuVDUSKe3HO++8A8C/Cmvnzp3GhfrDDz80+3nkM40Y5xHrXB1D1SpaTek3un/dunXYs2ePuQ8NVfcVFhZaZRdffLHZ5qllateubbZ1Pfl1b+3UqROaNWsGwI6mp6oYwG6PPJcZT99EVXxUFeoHnfmAy0+zCVAVEmC3A56uibrB69/xthUOmr2D9gWeTYCqL7nLMs/KQNVnWn3lN5vIkSNHEBcX51ElUxU6f270b/6+oe7duk3xthWO9u3bmz5A3ze8T9K/eS41moUAsN9Nut78ynM+kRmOIAiCEBNkwBEEQRBiggw4giAIQkwIjA0nKysL1apV87gSUldInprhvvvuM9vc9Y+6BWq3WL3iXTRoqom6deua/dxOQst4ihqub6fH6jQ4u3bt8mXDadKkCTIzMz0upH369DHbvN5oOhluF6D6XW1P8GszKSoqMik+6BIIOpOxhmaL5q6nVE/N0XY5v6ltjh8/jmPHjnlSItFUQ9yNmKYBWbNmjVVGbU/aDuQ3c3VOTo5pE3TNG76sBLVp8ZRMNCMzYLcjrYP366a9f/9+OI7jebY0RQu9X+B7l17Am2Wb2mt0BnC/tj/qYk3ttFw2WjfcLZuHBVBbmLa9cdtKOBISEpCYmOhJl0PXv+LZqevVq2e2W7dubZXRutHP3m9W7+7du5t6p9m7uX2LprPhbtn8fUOvrfubX/vW+URmOIIgCEJMkAFHEARBiAmBUalVqVIF1atX9yw6RCPouQsnzTxAVRiAPTXVGaf37t3rS6VWtWpVo3aiqntbVyMAACAASURBVDmuPqAuq6NHj7bKuCs2dfHU0d1+3W1bt26N/Px8jwvnpEmTzDZXqVF1BI/YpufREfF+szA0adLEqD2oioHXDVVN8EXFuEqIqnj0efy6sterVw+ZmZke1RRV93GXbdpWImXQ1S75ftoMcFZmfS90YS/u3hvJPZUvCEZdgblqNBpa3cjVVlRVw2WhrsY06h+w641nuY5GxYoVTTuk7Z6rTml/43UR6VmVdQG2/Px81KxZ0+OWTlVlfMFF2qa4WzLNgK7dp/0uarh7927znKnqnWd5p6pw7gbNVYM004cOQ/CrNj+fyAxHEARBiAky4AiCIAgxQQYcQRAEISYEyoaTlpbm0VtSG45OG6KhenvuXkzdI3WaG79uitWrVzd2Cqo35i601DYSydUXsHXT2hZFU4xE4sSJEzh+/LhnVT+6OiR33aXZirm+l6a20e7LZdF964zI1Ba0YMEC63dUHm7f4fYmatPROnSuvw9Hbm6ulY5GQ7Mg89Q61E2Zl1Hdt9bTc/fccKxdu9bYwug9cztFgwYNzHabNm2sskju/doutmXLFkyfPj2qPD169EC9evU8rsLUpsbbILV38T5FbRLajffYsWO+VtkcNmyY6cvUFsXtCrSuuV2CZ1enf+tn6tf194ILLkD9+vWt0AbA7hvcnZ3eJ+9vNAWX34zVmtTUVOOeTjOrcxd5auvktjfex2k70n3q0KFDHtfyWCMzHEEQBCEmlPsMR4/a+kuLf/HQryr+NUa/hvhXHP2tntnor076pRBKFhooSL/8+SyAznC4JxiHfo1p2fR1osmjv6b4+hg6iSbgDTyl5+SzBfpbPRPQM7losoT7AqWyAHYgHH+mkb5UuZdaNHn0c+dffJGSStI2xWcv9OtUz+D0fUaThc4cqJcdP456iXEPtkgzHD0z1u0hmjz693zNG9pX+Nc4fY7cy4rORPX96bYUTRbaH+nsj1+DysoDdrl3I60bPfvQ9xZNHj175fdPvQKploCem99PqPsIdc1w+6n3Le2rfBZF2xT32ONaBFo3+rf62YaTJyaocmbKlCkKQEz/TZkyJTCyBE2eIMkSNHmCJEvQ5AmSLEGTJ0iyRJInFjhK+Vx28jxRVFSEWbNmIS8vz9Kfng90aptevXp50lbEWpagyRMkWYImT5BkCZo8QZIlaPIESRY/8sSCch9wBEEQhJ8G4jQgCIIgxAQZcARBEISYUO5eaqJTDYY8QZIlaPIESZagyRMkWYImT5Bk8SNPTCg3d4X/IV4jwZInSLIETZ4gyRI0eYIkS9DkCZIskeSJBeU+w9FZnQcOHIiMjAxPHAKNBOaLRVE/dZ5FgGaB1f7r3377Ld544w0rk3QoWV566SU0btwYgB1rEmmxKbrgGL8+AMsvXsfsrFu3DiNGjIgqz9133406depY2WIBO2aD1xuNJ+CxBvQ+dLzKjh078Mgjj0SV5emnnzaR8jQWgcez0FgfvpAUj4qm5Xp748aNuPXWW6PKM3nyZDRu3NiTvZhGfutMExoabc3jp2699Vazfe211wI4m0HAz3PSsgB2FgiavYDLM3/+fKuMPjcAuOWWW8z2wIEDAQDr16/HmDFjosrTt29fpKWleWKUaD/isS30ufF4DRojouutqKgI06ZNiyrLkCFDzAKC9Fnxdkv7UZ06dcJeH7AzVuh2s3fvXrzyyitR5Rk9ejSys7M9fZrGuvDYMhqHx9s0/Vv39d27d2PSpElRZenYsaN5JjRmTS8AGEoeHr/FZyw0hkg/q8OHD2PRokVh5YkF5T7g6KlkRkYGatas6WmAdNVBnvaGppOJFMDFO0646ave37hxY5MOgqZv4Q2QwlNk8CDRUAOOX3nq1KmDhg0betKw0LrinZFenwep0fsoa900aNDApFCngai8A9KOyz8UeJp9Ws5/6+dZFRQUeO6DBhDSpRI4vL3VqlXLbBcUFJRZFppGRMOXWuApSyj8Oeo0QgDQqlWrMsmTlpaGrKwsz8cP7Uc8YJEGzPL2HinQOZosNWrUMIMJDZDl9U9XteUpiyK18bK2m+zsbNSuXdtzj3QA4sGVdHkCfj36t2KOv9Fk0Wm9ALv+eTA7HYz4OflHHE3Lw9NuxUJ9F45yH3A0EydOhOM4GDZsmLX/hhtuMNt8iWW6rCpfu4MOOHrbb+6y+fPnm0hkmpuJRz7T9TL47IO/VOlaIqtWrQLg/YIJR15eHho3bmytvwPYgyH/UqUvBL5UMO0Qembid0nn4uJiM+ujnYOv1UM7J1+Ol39h0QFhyZIlnn2ReO6555Cdne25f5oTjM8aOnfubLb5zGzWrFlmW798+L2FY/z48Z5nBACrV6+2/qaDIf89z5Dw3nvvmW3d/njGiXBs3boVxcXFGD58uLW/e/fuZpu3wRdffNFs0/WmAPtlPHjwYAD+11jZtWuXuTc644q0xLWe0Wn44Dhx4kSz/fHHHwPwn8ds3759iI+P93wo0T4eKXsInzXSwVC/Z/zmdTt58qSpG9pu+Zo7dFbD32X6nRKKq6++2pccsUC81ARBEISYIAOOIAiCEBMCo1LTKpH+/ftb+/XyqIA3XTmd/nK1BVVNPPnkkwDOGm/9pHX/7rvvjG6XXpPrZqk6INISy4BtKNXn9Ksa0ctvf/jhh9Z+Kg/X4dIpP5eN2gW0uinSsseUypUrG3UhVWlyVRC1f9SvX98q47p4qtbQskWyl1FKSkpw+PDhiGovbcinx2hWrFhhlVHnE23c96umOXTokKlHmsqe3wvVr3M1UaRkmnrpYr/ytG/fHrm5uZYKDbANzLNnz7bKaHvnz0kv1Q4AHTp0AOB1iAhHXFycsSVQZwCuUqNOA9HUjTVr1jTbehlwrloNx8mTJ3HixAlPP6XPn6vwqU2Hv4uoDVE/X78q/GPHjpk+2rVrV7O/U6dO1u+oapovCc+XQZ88ebLZ1u9Jvyq+84nMcARBEISYIAOOIAiCEBNkwBEEQRBiQmBsOJ07d0aVKlU8bqr33nuv2eYLSVFXY2qXAGy7QJcuXQB47RzhoG6KNBCO+6/TwFO+dCtfnpfGQmh3ar/+8LNmzcL69es9SzPTOAR+LlqPPNaBxkFovTR3wQzHtm3bzL1Ecuum+n+uJ+d1RW0S2oXb77LOp06dwsmTJz1xOPS58Xqj9hW6+BVg21f4ImPRoLp4am/gdgWqf+fu6NyWRtuxdkGOtNgXJSUlBZUrV/a0RRoUS93AAftZ8Vgy6uqvl1vni4SF48iRI+beqHsvr/9IiwryugplQ/T7rIqKiqCU8rQbGrPCr0ffN9wdnNaNtovy+Ktw1K1b19iq6TW5DYkuTc5jhPjy89ROp5+jXzvt+URmOIIgCEJMkAFHEARBiAky4AiCIAgxITA2nH379qGkpAQPPvigtZ/GkDRr1swqa9u2rdnmOkyqi9U2DG7LCIe2CwCh08BoqN2D66J5OhUae6B1qTzHUTh0zAC3RVDZeIwQjUuidgnA1g3rGBm/9qRdu3YZuaktgacB0TEjwPf6fg2PfaEpgrTtx286Gdd1ERcX54lLoHmoeE4qWlc86SHVk+uYDL/PKTU11dgJad1wOweN4eB2RRp3BsDKn6dzsPF4lHCsX78excXFeOaZZ6z91IbD8/NFyrNH27SuN25LCIdSytQ7rQ8ei0bjSebOnWuV8WdM7Sa6jCfxDUdeXh5ycnI8dg0aO8NjbWgb58l6aRvWthu/aX8qVqxobHXUvrl48WLrdzQOSucz1CxcuND6m8b9DRgwAIDYcARBEISfEDLgCIIgCDEhMCq1du3aISsry6P+oSoG7g5Kp/gffPCBVUanxnra7jfVBIVmPebZoun1eRqKpk2bWn/T6fVzzz0HwH+Kko8//hhVqlSxMukC9hSZq22oaoQv60BdbbUbLFc7hePo0aNGjUJdUHlqDepSy7NV81QzVNU5Z84cAN66DkdycjIqVKjgWR+Eqj+42orWB68bqlrU9+Q3zU6tWrWMqiWSCz5V+3C1C1dtUrWWVqlGWpeJ8sEHHyA+Pt6jgqPZumn7Bmy1FVeXhUp74zfLeOXKlU1GdarS5W2Dtk1+n1xtTduf7kt+U9sUFBSgUaNGnvcNPZ73KepCztV7tB6WLVsGwH8qGdp+R4wYYfZ/8cUX1u/o3zw7NFfFajUa8H0GblGpCYIgCD8ZZMARBEEQYoIMOIIgCEJMCIwNJysrC7m5uejWrZu1n+pUtX5fQ1OUrF271iqjdgHtYsvdHMNBl3ylemK+qie9Btcdc7deqn/V98H1wOFYvXo1EhISPPdI3Xu5fSs7O9tsc90ttY+89dZbAPynBMnMzDTLMNNUH9wuc8EFF5ht7sLJ7TPz588329qd029aEL2MMrez0DXduZ6e6tu5DYLasrQOnrsHhyMrK8ssi0yvz+0y1BWYrvAIeJefpimCtL2Fu8CHo0aNGqhYsaLHrZu2FV5v1KalU0JpqJ1Shwjs3r074mqTmtTUVLMUQb169cx+bpekNhzuas/d6ekqv7q/+W03R44cQXFxsadtUlsg7zfUTsJXGKbpg3S4hN/+TZduoNfky0rQlWpDnYNC61G3Fx6qUR7IDEcQBEGICTLgCIIgCDEhMCq1+Ph4JCQkYMGCBdZ+Gm3L3RSp2qJ58+ZWGXU3LWuW3d69e5sVK2l0P49ipmXvvvuuVcZX51y6dKnZ9qsS0SQmJiIxMdGjbqErIvLMstTdlR9HVTraZdZvVHS7du3QsmVLAECrVq3Mfr5yI1VjcbWRXklTQ+uOZgD2w/Dhw1FQUOBZeZKqwbiahao/tAurhqoWteqnuLjYU4eh6NWrl2k3tK3SyH7AznrO3bK52pRmGdfuzHv37vVkgA5FUlISkpOTPbJTNRqvG6oapdHzgK1S0i7LfjMNUHUjbbc80wPNHhBNBb5+/XqzzdVt0XAcB47jeFyPqQs5V4VSlRTPXE/bn1Znnzx50lcoBs1sQtXNfMVV+t7gKjT+N1UV6zbtNwP7+URmOIIgCEJMkAFHEARBiAnlrlLTqg/tHcQ9O+jUlUfuUs8wqnoAbPWZ9qbSXm3hvI70fqrWoCoDHvlMy3gSQu79FEmNFk2ecOouup+fg6r/eKQ5vQ+ubowmC1V50UwJ1CsGsNWdPAsBXQCOyxruuuH2a3UdX0CO3jO/f3p9rrah96RVEVq+srQbmkyWq/tou+EZHnj2Ceq1pFU8uk9Ek0f/z1XJkbynqIqNe1qGWjhN32c0Weh9Rno2NEMD92bk7eiHtBvdXrgnGu1T3KuLtrFI1y5rn+KJhzWRVGq8LJKKTcujVWp+vS7PC6qcmTJligIQ039TpkwJjCxBkydIsgRNniDJEjR5giRL0OQJkiyR5IkFjlJltGD/yBQVFWHWrFnIy8vznSL/XCktLcXWrVvRq1cvj7Ey1rIETZ4gyRI0eYIkS9DkCZIsQZMnSLL4kScWlPuAIwiCIPw0EKcBQRAEISbIgCMIgiDEhHL3UhOdajDkCZIsQZMnSLIETZ4gyRI0eYIkix95YkK5uSv8D/EaCZY8QZIlaPIESZagyRMkWYImT5BkiSRPLCj3GY5O1zFmzBhkZ2d74mmoX3ykFesirfSn/eF3796NF154wVrxMJQsnTt3NqlaaOwB93WnWXi5XzxPGUJjX9T//DSKi4uxYMGCqPJce+21yMrK8vj+R4oZoHUVyZ9ff1nt2bPHV93ceeedJkUJrXOaORoAVq5cabZ5Khsua+/evc1227ZtAZyNefj73/8eVZ5f/epXqFWrlufZ0HukWb0BO2UJj0kJtZrmzp078cQTT0SV5cUXXzTpYHTWa8DOag7YqWV4tuJw1wC+T/uydu1ajBgxIqo8Tz/9NBo0aOCJ7aHZnWnqKAD46KOPwl5/1KhRZrtfv34Azq4Y+5vf/CaqLM2bNzexWnQ1WN5vadvIyMgIKwtgx+jp/nbkyBEsX748qjy9e/dG9erVPe8bFSHWhfYpLjfti/p9c+DAAcycOTOqLHfffbfpUzQujKbOAuwYJZ4Sia94S4/Vaa62b9+Ov/71rxHb2Pmm3Acc3fmzs7NRp04dz8uI5rbijYPCg9voS4an3g83fdX76fIE9CHzlxptgLyMv7joS0Yxx8Bo8uilG/iLg94XPwetq0gDDm+o0WSpXbs2GjRoAMCuc36/NEiPp8fnHw40t1b9+vXLJE+tWrVQr149zzXoQMIHHBqkyl8ckZaTjiZLo0aN0Lp1awCRg+to4CfPV8b/pvB8edHkadCgAVq0aOHJ50U/XMqSu47mUqPLT/iRJTU11fQlmueP1z89D20XgLff0L95+4smT/Xq1VGjRg1r8OPn5P2G9ikuNw1g5e8iP31KL9NA2yZf/pvmmeNLStNAa8AOJuVB2bFQ34Wj3AccjX7Jv//++9Z+mgSSrscB2OvT8Mh+GiWtG1WkAYuyatUqcwxdV4Z/VdCHThsD4H3JUVm1/nTHjh2e+w3FokWLsGbNGs+6I7SR8zVfQkWoa+ignpOTA8D7NRWOw4cPmwhwmvlh3rx51u/oC5fWIeBNUEnvq2fPngC8g1Q49IuDv+A/+eQTs62j4jX0pU5nV4CdhFRnMQg16wnF1KlTsWjRIgD2rIbO9gD7hcQj7fl9b9myxWzrhKD8fsKxaNEifPPNN54XIE0ky/sEXYOFZxqg2QJWr14N4OwMxw+O45gXOG2b/GOQfgDxGQ7PuBHqufhdD2ft2rXYsWOHZ4ZL22pubq5VRp8Nl4UOjvr++EdoOBYtWmSeM/0A4AlC6cDRrl07q4y/f6hWQT9jv+uBnU/ES00QBEGICTLgCIIgCDEhMCq1GTNmoFq1ap5Eh/379zfbkab/3Gj9xhtvmG099eY2kHBQ+wPV8Uaa/nODPk9QSdVv2vi6atUqPPLII1Hl0WsEcX0zVf9w/TadznN105IlS8y232VwNfv37ze6ZbrOS4cOHazf3XPPPWabq43+/Oc/W39Tu4le14SvfRSOzMxM5ObmYuHChdZ++qz49al6k9uMqN5c1yHX5YejqKjIHENVarzd0WfDnylXxdLno20xftvxkSNHcOjQIUstB9gq1jZt2lhlVLXK14qhbUyrbHjS2nDQNV/C9S8g8no4/L7pfWlVGleth0O3s+HDh1v76Tumbt26nnvQzJ071yqj6q6//OUvAM6qHR977LGosuzYscP0AdpXebuldplhw4ZZZdquqqEqNe3A4rduzicywxEEQRBiggw4giAIQkyQAUcQBEGICYGx4SxZsgTx8fEYN26ctZ/aBrh9h8YX6MApDXWhvuOOOwBEDg6l1K9f3+jy+/TpY/bzIDl6/ebNm1tlPNiPrkFfp04dAF63x3A0adIEKSkp1nrzgG3DibbGOaVp06ZmW+vTS0pKLBnDUblyZWMDoffM4zKoeyq19QBel1K61rre9uumvWHDBpw+fdpjM6P6fR5bQ91yuV2Aunrr50PjZiKRmppqngnV/3P3Wlo33IbBXcapPFqOSLFClMTERCQlJVk2K8C2RXCXaWo34XZBal/Scvm1CxQWFqJWrVoA7L6wfv1663e0LfBF9Xjd0PvSz9Tv4mK33347cnNzPSlepk6dara5W3bnzp3NNl8Mkh6n7YL8N+FITk427xvaVrjtbfPmzWabx2S1b9/e+pte+9lnnwXg3/Z3PpEZjiAIghATZMARBEEQYoIMOIIgCEJMCIwNJz09HRUqVPDkD/r000/NNk2ICMDohAFvPAXNgeZXl6pp0KCBiQegaWB42hFqJ+HxEzxHGbVbaN0415GHo3PnzqhZs6aVWgQA1qxZY7Z5fjKaooPbQ6juW6eS2b17ty8bTosWLdCsWTMAwPz5883+SZMmWb975ZVXzDZ/ptxuQBNY1qxZE8BZ29Ls2bOjyrNp0yYcO3bMk+6F1ge/Po1R0OlrNDTuRacy8hsTRNH3wWUBbLsHt1PQGBXAtiPoNsnjwcKhbUrcBkVtAzx9DW3jPMkj/Vvfg19Z0tPTTSyazhsGeFPj0DgYnhKJtjfA7te6jRcXF3tsvaHQKX+4rZXGvvD+Tm2u/J3C7WRlgeZupPE8vN/SdwhP68Pjoegz17YbHitYHsgMRxAEQYgJMuAIgiAIMSEwKrWBAweiVq1a+Pzzz639VMXAVSOvv/662abTdOD71BXAWbdi4PsV76JRXFxs1F001QZXMVAVF8/kzN10aaZprUbwm/W3fv36yM/P90ybqZs3dXUG7OzR3B2STs21OzOv23CcOXPGXLdly5ZmP0+BT1UVXL3I65G6EOs0Mn7dbVevXo1vvvnG43pMM0Jz93Na79TVlMuq1+bx676+ePFikyaeuunzLOOR1uPhaeZp+9PPmNdnOBISEoxrNIW6YvNz0TLuMkzV1Lp/cLfucBw/fty4LNM0Tzy1DM26rLOSa7j6jmZa1+8N7nIfjs8//xzJyckeVTyt/wkTJlhlVAVO3bcBYPDgwWZbty/+m3Ds3r3b1A1tK/xeqDv8XXfdZZXpUAsN7fNaDp4qpzyQGY4gCIIQE2TAEQRBEGKCDDiCIAhCTAiMDadGjRqoVauWpScGbNdAmp4bsF0qeSp1qj/VOuMjR474suHQ5XCpLYG7MVO3SS4b/y1199Su3n5kAc7aak6dOoUePXpY+7VLcyhoSn2up6ayaXsC1/OHY926dUYXTN19eWobuiIhTzfCr0Vl1S67vD7DsWnTJiQnJ0dc/pu7t9J0RVyvTd1StQx+3depuzU9D69/bVMEgFatWlllPH1Rfn6+2dZpZ/wul6BTpvDVIKls3J2f1jt3X6c2FG378btc8bFjx0w7oPY+7hZOnyNvJ9xOR+1HZV3NskuXLsjKyvLYCiMtt0Driq8US5/xZ599BsBrHwzHokWLzH3TVF48tQ6103DXb+7eT9NOaVtrcXGx7+UkzhcywxEEQRBiggw4giAIQkwIjEpNu3DyiF2qYuOuf3Q6z6eYVIWls8z6dZmsXLmyUUPQ8/Bs09T1mE/3uVs0dWlcvXo1AP9uk/Hx8UhMTPSoG+k1c3JyrDLq7sploWoTrVLw62pLV26kKhaumqFqNL5SK38O9Dx+1Vca7X7NXWipiq9r165WGVW38ZUSqZuyjtbm8ocjLi7O1AOtD9pO+N9c3cez/tL70Coav67InTp1QkFBgaduqBqJR59TNRp/TrRv6v6xcuVKPPDAA1FlqVixolHl0WzZVA0J2OEMvG54xgaqttVt6MCBA/jwww+jylO1alWkpaVZbtiAnb2Eqwtp/+eR/rQv6zbsV32VkpJi7o2eh6tix4wZY7Z5FgIeYsGzNPBzlxcywxEEQRBiggw4giAIQkwod5WaVr3oKSGPvKbTWK5uoVNWPsWkqgKtGtDqgnCLNOn9VAVBp/FcNjrl57Lx6H46BddTWx3BHk0eXTfUuwiwEwhyLx2qDuBTe1pX+hpaNRVNFprsMZS3W6gyrgrhUNWNVvdomaPJE+ocgP38+f1TTyjupUbl1h5UOqNENFnosbTdcrUVfVbRFmCj8ukkoto7M5o8+lw80SQ9jquGIi3ORlW6envDhg2+ZKHPgHrZ8WtQuEqN/01l121aq0GjyaPVyty7kbYj7iVH+z9VCwK22lW3A32NaLLQOqD3xFWhNIksf6b8/RfKk1H/xu8idecFVc5MmTJFAYjpvylTpgRGlqDJEyRZgiZPkGQJmjxBkiVo8gRJlkjyxAJHqTJaaX9kioqKMGvWLOTl5fn26T9XdC61Xr16efJExVqWoMkTJFmCJk+QZAmaPEGSJWjyBEkWP/LEgnIfcARBEISfBuI0IAiCIMQEGXAEQRCEmFDuXmqiUw2GPEGSJWjyBEmWoMkTJFmCJk+QZPEjT0woN3eF/yFeI8GSJ0iyBE2eIMkSNHmCJEvQ5AmSLJHkiQXlPsPRqz9eeumlqF69uicugaYIiZRihMcT0L/V//wiDh48iI8//tiz4iSXpU+fPiZ1B/XT5+lbIpVFiifSfvcHDhzAzJkzo8pTWFiIypUrY/bs2VY5TZHSunVrq6x///5mm9epzlYN2ClBZs+eHVWWRx991GQwpnEKfMVPmrLk66+/tsr411zHjh3Ntl6pc/PmzRg3blxUeQYOHIj09HQsXbrUKqepPvizofEkNJUJYKcE0asvfvvtt3jzzTejylKvXj1zb3QFWJoBGLBXh+Qr1fLYi3nz5pnt9evXAzibJmnFihVR5alQoYKVbkdDU6bwbNV05VgeSzZ//nyzrVNJnTx5Evv37/9/7V1rkFXVlf6geTctNi+b5tXNQ14NKhDQyDCIEWJ8JNEYxkSjGWcyKSeTmTFTSaVmpmqmUjOZipOoNQ8djWVGW6PxFaJG8UWQKCAPiSBgECSE0CANAs371fODrM23v9P3nsNUOH2qXF8Vxb733L53nX32Pvvsb631rVRbZs+enVCtBpLzpJVimHr16hUd0zwczpmx+Z51Tt12220YNGhQYtxwzpSqNXOui0pBscxUbW0tgJN5XLfffnuqLV/+8peDoj3LPGm+DP9mWo4S/60d27ZtG370ox+VtCcPtPuCYxO0d+/e6N+/f6LUMU+WchpSmlzH2mU6qEttX9kW01jiC6kTt9wx1V0rl1CXZg9ru5X6fdXr4puK9imXddAEtjRbhg0bFvS9+LOcEArEuk2q86STlUtMa6nsNHv69u2LAQMGJEoz88OJXhvuD9Xu69+/f2hzKeQstnTv3r1NTTq9cQ4fPjy0WUYeSCbw2iIDJLWw0uypqKhARUVFIgmQ+0rPkcshaGltPg99+Msyp7hvDTo3+bWW5tYEYr4583zPYs+gQYMwfPjwRHkEfohSPTLuR9U15JLiekNPs6Wmpib8PSf6aukEvm7aF/qa/1aP5UHflUK7LziGcePGoa6uLrpwQPyU9fbbb0fHuAaOPkVzJq7Vptfs3FLo06dPmIg826IcRAAAIABJREFUAJ988snoczzg9Ybf0NBQ8vvtqUonSSls3LgRTU1NiZsD3yzL1Q7Rm9rPfvaz0H7wwQcBlM/4ZlRUVISFjmtwaN/Mnz8/tPU8VYSVd2enW5/nF7/4BXr06IGVK1dG7/Pf6+6Pf18XoyVLloS2jb2smdkbNmwIu16ueTNr1qzoc/zkbJn6BlUa4DE+b968THYYOnTogI4dOyYEKnnHpX3DtilrwIupzaWs4+bss88OfgNmBnhBBeJsehVW1X7kcWX9qA+epfCv//qv6Ny5c2LeXnjhhaGtuwZ+iOQ5BMTiwfZAlnXcNDU1JdQJ2vp77mtd8FUxg3d/tos/3ZpBZwIepeZwOByOXOALjsPhcDhyQWEotcsuuwwXXHBBKM9qMFFJAJg7d250jDlt5WKZt7TvUH9FKUydOjVQInfddVd4nyk0IPYFqHie0kbsnF2/fj2A7KWCzTegnHY5MUHmcE3Q0MA0gvHqhw4dykTxvfbaa6EuyyuvvBLeL0dpqvNZy1Gzb85ouqzlt/fu3YtDhw4l6EYuAax8e1vOZgPTJiY4eTq0kVF5l156aXhfqZnFixeHtvq+eLwDMQ1ivq7Dhw8n/q4ttLa2orW1NeFTsDLeQNIvxLSZ0jRMd9nYa80oVLJv374wDjloxYRRDSzyuWjRouiY+jHnzJkT2kYF2txKQ8+ePdG9e/dEqWgeR+qHZZpUgzu432x+ZaX3tm7dGuYv/436cJhimz17dnRMxWu5JlCawGqe8B2Ow+FwOHKBLzgOh8PhyAW+4DgcDocjFxTGh9O5c2d06dIlCgMFgHvuuSe0NZ/hmmuuCe1f/epX0TFN2gJO8q5ZfAOjR48O4aKcM6G/z3wrhwEDycJOHIp62223ATjJrXIyXSkcPnwYFRUVCb7cfClA0ofDvD2fAxD7R8wvpRxwKSxdujRwwpw0eeONN0af47555JFHomOWGGdgrtz6Q7n9UujYsSMqKipw+eWXR+8zF88+EyD296k/iUNxzYYjR45k8m8NHTo0+Is49+jll1+OPse+Ec0tGz16dPSaQ5rtmn744YeZfDiXXHIJ+vbtG/lsgLg/NA9Jc7YYnJdjc+HIkSMJX0NbeP7554Nf9eabbw7vT5w4MfrcvffeG9o6ptesWRO9fvrpp0Pb/DlZbAGAK6+8EgMHDkz4qX75y1+GtqZo/PEf/3Fo61zknB0L/25qaooSoEvh0KFDwZfI36M+JL6ObAtwKvXDwOHu3//+9wEk70ntAd/hOBwOhyMX+ILjcDgcjlzgC47D4XA4ckFhfDgrVqzAvn378MILL0Tvs37QFVdcER3jvBjltJmbNi5Ycy5KYdu2bYHnf+utt8L77DMBYn5dOV2VLGHflOUaqOBlKezbtw9Hjx5N5OGwfIvKVtx5552hrf4szsMxX0PWfIqxY8cGHwznQZjopoH9FnqsZ8+e0WvuK8v10DyHUhg2bBh69eqV8LFwjpDmAfH5qw+Fj5k/I2u+VL9+/cI14uuh2lUsDa9+Qc0Z4vwO+86s+WT19fUYNGhQwk/CEjE6pjhXQ/2L7JeyednS0pLI5WkLX/va14IP6qabbgrvsyQMEJ+bStmo0Or//M//hPbnP/95ANnH8f79+7F3795E/hjn8eh1Y/+Q+n44J878oVnzt3r16hWuA+dscd4TEI/DgQMHRsd03HA/2LhRm9sDvsNxOBwORy7wBcfhcDgcuaAwlNry5cvR1NSU2BoyVPaGqRJVgmbVXfvOrCGTc+fOxdKlSwHEtJcqC7N8jm73OZwbAH70ox+1aXcW7N69GxUVFYnwZlakViqBQ5+V3uOttdFtR48ezUTxjR49OpQ+YNqL67YAcQkE3cqzIi4Q01im1rtly5ZEqHlbmDJlCgYNGpSgvT71qU+FtoaDskKx9s3y5ctD22gSldAvhZEjR4ZxwONYSxYw/VdOLRmIx5+FaWeVKDly5AgOHToUlRwA4nQCDVFnBXD9HaYJjWrOShsNGTIkhJyzDJRK0TBNvnDhwuiYSvTwdbV+yjq37PM6bjgsXFMtmDrUMcXhzNYuV7+LUVVVFeYAh55rODv//le/+tXomIZws3q62ZF1HJ9J+A7H4XA4HLnAFxyHw+Fw5AJfcBwOh8ORCwrjw2lubkaHDh0S5VA5TFLlvvmz5SoXGmesMv2lsHbt2hC6zKWa9e/Zb6TlaKdMmVLys2b3/v37E3IdbcHCuTWEd+rUqaGtEiUsVaPyGiztYj6EgwcPZvLh1NbWBi79nXfeCe9zpUwg5uKVV9ewaC4xbZId7EsohylTpmDs2LFRqDEQXw8tcc3+FT3Gfj7r06y+P+biZ86cmfgeA/eVSi1peDdfEwvTzcrF79q1C506dUpUteRQYB3T7AvUEhucopA1bN2wc+fO4IPgEgzqQ2N/U7kKuwAiOSMLr9YyJaUwePBgDBw4MDFuuASChnuz3JL6vni+2z1DQ75Lobm5OVxT9gVfdNFF0efYv6g+U/UXsT0zZswAcDId4/77789k05mC73AcDofDkQt8wXE4HA5HLigMpXb8+HEcO3YsUTmTt+5KKfF2WFV2eWtsCgEa1lwKx44dC9v33/zmN+F9DlkE4hBKzea/7LLLStpq9mzfvj0TpTZ58mRUVVVFVUOBmH7QcHK2W8E0jVFqp0PTWFgz04RMtwBxBv2kSZOiY1w5EYjDXU0hV8dBKXTr1g09evRIXFsO4dVqoFdffXVojx8/PjrGyhIWlvvBBx9g9erVqbZcfPHFmDBhAoBYhUKpFc5gV2pGf4dpJOun3bt3R3RmKdTU1LSpiGwh/0CsjgzEc0TDonmMG/XZ0tKSWRHZqElWQVa6j1XVzzvvvOiYhtMzbWp9qveIUrj++utx/vnnJ+hevt+oWjPTr0r9c1iyje8s/QKc7HPrd77H6G/wuJ0+fXp0TGlfnlM2F73ip8PhcDg+MvAFx+FwOBy5oN0pNdvm2dZWI9E4Sk1pH6Z0NKKE/06zkEttLe19jhTiTGoV/2R7lAJSMVH+W7PVts9p9th22SLnDJylrZFf/FntG+5jOweLTkqzhSOMmGJQuoN/Q1UgNLubj5s9RkOl2WOKBiq0yJngSvfxMc3sZ4FWOye7tmm28PVgUUyNnGJKk/sTSEb08W/qHEmzx+xXupFpOo384s8qFcdj3GywcZ1mC88Hpqo0Ko/Hhn6nzjH+Hpundj3T7DEqWe83bY1FA88jFtnU87DfMLWTNFv4NznaTCk1Pl+1W3+Dv8e+3+xvV2qttZ3R2NjYCiDXf42NjYWxpWj2FMmWotlTJFuKZk+RbCmaPUWypZw9eaBDa2tGPe8zhObmZsybNw91dXWJp9Q/NA4ePIhNmzZh9uzZifj7vG0pmj1FsqVo9hTJlqLZUyRbimZPkWzJYk8eaPcFx+FwOBwfDXjQgMPhcDhygS84DofD4cgF7R6l5pxqMewpki1Fs6dIthTNniLZUjR7imRLFntyQbuFK/weHjVSLHuKZEvR7CmSLUWzp0i2FM2eItlSzp480O47HJNguPLKK9GnT59EJT1+3bVr1+gY5wxo5UGONW/9fVzEzp078eyzzyYqB6ot999/P0aNGgUgrrqncjH8G/rEoBVAWXLD5EzWrl2LG264IdWeOXPmoH///ol8Dpb2UIkUzhNQuQ/OCbJcoO3bt+Phhx9OteVv//Zvw7lxrL/memiuDYOVrIE438Gu1ZYtW/CDH/wg1Z4777wTI0aMKJsXoZJELHWj1Tg518Ha7733Hr7+9a+n2nLzzTeH7+Y8CZWh4TwcluBpyx6WbBo7diyAk9fqoYceSrVn/Pjx6NmzZ6KqKEvGmBRPW/Zo3hdfN3si37t3L5YsWZJqyxe+8AX0798fQCzDovljLHWjc1rzYniMWd7d9u3b8eCDD6bac9VVV6Fv376JXBf+znJSWGqLyuAAJ6/zT3/601Rbrr322iAb1NZcMLBateZv6fwfPHhwwrbm5mbMnTu3pD15oN0XHBu4ffr0QU1NTeLGwQuObjt5QOhNjAe1XrhS21d7f9SoUUG3jBc5vYnyb2h5Ai3ry7presHT7Onfvz8GDhyYSNjiQabfyYuBfj/fjPVYmi2DBg0Kpa55ITudBUeTDXmS6UROs2fEiBEYP3584sbBsvs8UYFY90qTQttKJsxqS01NTfhuTuDU5FK+jloeQH+DE0j5JpLFnp49e6JXr16JvuGbuj4YlUu85OumC0WWMWy/xYmOrLkHxA9u5R5M1FZNyk6zp2/fvqipqUk8xP5/F5xypbbTbOnXr1+Yyzz+9L7F/aFJsKwdCcT3I10M86DvSqHdFxxDjx490LNnz4SYH0/WxYsXR8f4hq+dyjVIbHBoxnspNDY24tVXXwUQ35z1aZQnne7M9IbLWeg2cbUWSyn8x3/8BwBg9uzZ0fvXX399aLPoIXAqyxkAnnvuuegYC4bazVgzl0thzJgxQfCSF7xyC4xCs+n5ty07Pqs9AwYMwJAhQxK7vyeeeCK09YY/cODA0LZaIQa+qVs/Za1rsnnz5pCdz7+pOwxeRFjkEwCWLVsWveZdtS1mWYVNly5dio4dO2LkyJHR+7xr0utWbr7pjud0cOedd4Y2C09efPHF0ed4cdSaO3odeadoc1F3s6WwcOFCdO/ePXr4ABAepoCkyCz3ldZr4vuW3XtY7aQcDh48GO5l/GCqizovzlr/RsV7+bzefvttAMlFuT3gUWoOh8PhyAW+4DgcDocjFxSGUhs6dCiGDRuWcLByKVUViORtI5eCBuJaFFxSNwv27t0b/BMsYKhbZN7+KhWoviiGUSJZKb5OnTqhY8eO+PM///PofS4jq4EBzD9rn3KJ40996lMATtKFSue0BfMLAMDTTz8d3le6hWmriRMnRseUfmRfgdF0Wcpdm91bt27F3Llzo/eZBjNntYFpG6X3mJs3OjUrFdHS0hJ8Auz8v/HGG6PPfelLXwpt7ifgJJ3LeOaZZ0LbaMOstFF1dTW6dOmCj33sY9H7TA1p/R0W2dQxxfPNfAYHDhxIlIluC927dw/X/dprrw3va5AE+7SUJtLf4fnzxS9+EcBJ8VWlkNuCjY8rr7wyep9pcx037CfVOcXj77HHHgufuf3221NtWb58eegHrnljQSIGpuC1bLlSg2yP+X7UX9ge8B2Ow+FwOHKBLzgOh8PhyAW+4DgcDocjFxTGh9OnTx+cc845eOCBB6L32U/C/CYANDQ0hLb5IgwcVvvDH/4QwKmksDTU1taG8FgOi1ZOmePZNbfECoMZOITb/EL6N6Vwyy23oLa2NpGzcPfdd7dpCxAXi9IiV+PGjQvtz3zmMwBOhm3/5Cc/SbXl/vvvD8mNr7zySnhfQ2+Zf9YcJQ33ZD+dhZtqCHopLF++HLt27cLSpUuj99lPpH4S9tu88MIL0TG+xmZ3Vp/JgAEDwt9wOLP+PodC6xgol+xoobCaV1MKI0eORK9evRLhxBwyrv40vm7sIwRin4n5LHft2pXJh/NXf/VXYU6de+654f2f/vSn0efYv8SfA8r34xVXXAEAeOutt1JtAYC///u/x9ChQxO+1kcffbTk73M4uSWGG3gMmz8l67g555xzgk/mj/7oj8L7mj/GvmhNA9BE0Pr6+tD+whe+AOBkEvsbb7yRyaYzBd/hOBwOhyMX+ILjcDgcjlzgC47D4XA4ckFhfDiVlZU466yzEn4SlmjR2HPOvVE/Aed2GC9eTu+I0alTp8CTs4REuVwXzvsBkpzq0KFDQ9vi+ZU/L4UPPvgAJ06cwH/9139F7y9atCi09fyZb9ZjHLNvmm9Zc01MgggAbr311vD+RRddFH2O/UGaP6WSIXwd33zzTQBJv1MpbN++HZ07d07kTLC/S8+NpWY0D4e1xczXxv6wchgyZEjgzjnX6V/+5V+iz7HfiIU0AWDlypXRa/b9TZs2DUCSv0+D+hLY36eisyzto1piPH8sXyerBNGhQ4fCdVi4cGF4XyViWC7JBC0NqnvG2mJ2TCVfSsFkiLRv+L6huWDsq9IxzT6d0/W11dXVhTm6fPny8D7nuQHAa6+9Ftoquvrtb387en355ZeHttmh96j2gO9wHA6Hw5ELfMFxOBwORy4oDKW2bds2VFZWJiiGl156KbS///3vR8c4xG/BggXRMd7+2hY+axjyq6++Gqg9lv3W7TpTfBpeqSHMLH1j4Z0sm1MOq1atQvfu3RMyIKbaDMRhkEBMlajqLqsNm0THxo0bM9mybt26EK7JCtWqOsz0i0r4ME2q9tk5ZVXStn5hBWYgpjxUSZxpo0suuSQ6xjTnww8/DCA7bdSlS5dA7VgoKoCgPG7gvla5JL2OM2fODG0bYxpWXgo1NTXo169fIryXZe81/JwpRh03PMaN7sqqEr5q1apwTVmRmVMb1B6VpNK+4mtlEj1Zlb1XrFiBysrKhHwMjwemsIBYZZ2pTiCeC0Z5alhzKaxZsyb0Dd+jNm3aFH2Ow8Bvuumm6NhnP/vZ6DXToWarlntoD/gOx+FwOBy5wBcch8PhcOQCX3AcDofDkQsK48N54403sH79+kQo5HXXXRfaWjmRQ0hVZp258FmzZgE4VWM8DRaaC8R+Gw41BoBJkyaFtoYpang3+w2M480a+ltdXY2qqqqEzDyH8GroL3PhyiUzv2v+hKw+k/nz54c2V4S0ktwG9mHpd7O0ChD7ASZPngwgewi7ld/W8+cQ9nL+NOW1OSzVfE1Zue9du3YF/wqHHl966aXR59hPoGWcy5VKN99b1sqbdXV1GDx4cKL8OPu0rBqkgaVhtN84tN+kjLZs2RKNiVLgcHoet1wOAYjPTWVqNEyb55+dx/vvv59qC3Ay/Lp3796J0szs39ISz+zT0nIoPL9ff/3107LlwIEDYQ7wfYRlvYBYLktLo+t15GtsY0jvn+0B3+E4HA6HIxf4guNwOByOXFAYSu3EiRM4ceJEIkyTt7VTp06Njhn9AiTDM3k7atRV1jDkHj16hJBLpmY0Q56pCt2az5gxI3rNVOH69esBJKsdlsKcOXMwfPjwhFouUwyaMc39qBnanDlvIapKH5SCVR8F4nBhDaFldQNVstYMbA5NNdow6/Z/woQJmDBhQiIsms9Rw5o53FYz+5nG0XNKQ8eOHUPfMFWm589jVceAUmz82pSjWUG6HD73uc/hggsuSChkcHa/0jY8xjTTnq+pXac1a9bgrrvuSrVl8uTJgZLj8GatQslKA9wGklV1TbUcODWOs9KfgwYNQk1NTaJvStkCxPNNQ+15jNk1y1q1dtSoUeH+wP2vVCinQahCBqs3AMnrCpy+QsWZgO9wHA6Hw5ELfMFxOBwORy5od0rNtp9GXyg1xvSBUmJ8TCNYeKtsv2G0k9IW+jn+Xt6ic4Y+kIywYWiWNKsS2NbWoljS7LEoL6WG+Jx1i82vNaqJz8Mys82mNFtaW1tD/7QVCWNgOkFpC41A462+RfdZAbM0e4ye5IJnQHyOals5uq1cdFyaLRwNyGNIKU0e4zreNZue7TNq2Po2zR6jJfX3OXpKxzD3jVKKnAVvVKBFOabZwmOQ57FS6OUiN5Uu4z42mtCy89PssT4sJ/ZZTqxXaU0+ZnS89WWaLaWoWxX3ZcWOclGZbb0GTl2DUvbkgtZ2RmNjYyuAXP81NjYWxpai2VMkW4pmT5FsKZo9RbKlaPYUyZZy9uSBDq2tGb3FZwjNzc2YN28e6urqEs7VPzQOHjyITZs2Yfbs2QlZ9rxtKZo9RbKlaPYUyZai2VMkW4pmT5FsyWJPHmj3BcfhcDgcHw140IDD4XA4coEvOA6Hw+HIBe0epeacajHsKZItRbOnSLYUzZ4i2VI0e4pkSxZ7ckG7hSv8Hh41Uix7imRL0ewpki1Fs6dIthTNniLZUs6ePNDuOxyTb7jqqqvQt2/fRPw45yloXDrHwms1z7ZkbHbu3Ilnn302IRmhtvzZn/1ZkPH43e9+F45rjgTH3rdK7IXmPrAsh+WaNDU14d577021p76+vs0nIM4h0CqQbCvnAKndlrdw6NAhbN68OdWWmTNnhu/jXIDNmzdHn2dpGs1tUUVw/k2TK9m9ezcWLlyYas8Xv/jFqBKigatqLl26NDrGuR9DhgyJjrFcUv/+/QGcrB766KOPptpy//33Y9SoUQDi/rdcIQMrls+bNy86pvItX/va10L7k5/8JICTfXvLLbek2nPHHXdg+PDhZfNwtKrlz372s9DWnJi/+Iu/CO3LLrsMwMl+/uY3v5lqy5/+6Z+GOcWVQ3Vs8NhUuSid0/za2tu2bcMDDzyQas93vvMd1NXVJc6Rc7b0nsJjReWZ+F5k+Wnvv/8+/vEf/zHVlpEjRwYpGp7TmmvDOVLab7pj4TlvY/HgwYN47733StqTB9p9wbEbad++fVFTU5PQAOJFRss4c+KhDsZyyU2ltq/2/oABA4LuEw8kHQDlFhxdOHlA6ERKs6et8tJAvKiplDxPCF1weBHnUsxZbKmurg4LBk9W1XIrV3pYk+1Yal0nTpo955xzTiR3b+AkuXKJl/r9tsgASHxvmi2jRo3CBRdcACCZbMrQ68/QGxmXBNASEGn2DB8+HA0NDWW17FSzTucYg7XFxo0bd1q28Jzi39dkTp5TfC2A5JzmRV2PpdlTV1eH0aNHJ7TcONFWHzC5VLeOYb4X6WKQZguXbuCxqsnsOjYYet/kOaUP6nnQd6XQ7guOoba2FkOHDk08cfLT6TvvvBMd48VAJwpfAMsA12z8Uli5cmXIfueLzE+/QFzXRG+wWseea8fYoM4qDtnS0oKjR48mFrWLL744tFVNYNmyZaH9iU98IjrGg1HFK9Owa9eu0O88ITTTn58OrXaKYdiwYdFrvrHY32Wth3Ps2DEcPXo0oezwyiuvhLb2Dd8s9CmWX9vnyk10xtq1a9tUYWhsbIw+xwKhujPVBwtWL7B6KFlrFzU3N6OpqSnxoMR9s2DBguhYuTnC888y9bPOKQY/jNkO28D9pjdKfXDixcquW1bxzu3bt6Nnz56Jvvn1r38d2lzjBij/MGK1k4BTtWn03ErBxjAQPzjzjgYoLwjLDybAKTFTAHjppZcSf99e8Cg1h8PhcOQCX3AcDofDkQsKQ6lNmTIFDQ0NePLJJ6P32amqFBRTQ7rd5u0sb3ez4MCBA4FLZQc3198AYqqIy78CSUcxBx/Y9lmFI0vBttzXXHNN9P6FF14Y2j/+8Y+jY0y/KW3CVKTV2DCHYhq6dOkSKBEOFFBKkWt3aGls9anwdbXvLudLYCxevBhnnXVWgr6YNm1aaOt14zGlvi+mKuz8lNoohfXr1wfe/5lnngnvcwADEPupdAxo6WAeN0bTZq1rsnHjRhw/fhxr1qyJ3meaWmkW7iv1p7EPwwIvstLC7IfkuaGlkXncqn9Ry7YzHWn0Z1bayOYU9y8Qj2OlfplC1rnCpcnt+mhp91LYu3dvoASZUssiyGlQapjveTbftIZPe8B3OA6Hw+HIBb7gOBwOhyMX+ILjcDgcjlxQGB/OoEGDMGzYMDz++OPR+8zTcuIZEOd+aBjtddddF9oWktzc3Iynnnoq1ZYjR45EyVKG1atXR59jvvfnP/95dOyhhx6KXjP/aiGVGpJZCvX19ejVq1ci1+j5558PbT3/sWPHhrb6Kf7yL/8ytGfOnAngZHj09OnTU21paWkJ582cuiZfciixFtnSEGq+jg0NDQDiPJpyMC7+W9/6VvT+9ddfH9paZIxDX7VP2Sdh/H5WW957770QJsw5K+rD4uuuPgT1m7BPx0K/ubhdOaxZswY7duxIpBPwtbHrb+CQa82tYp+K+aiy2rJjx47gS+BzVt9Dnz59Qlv9WytWrIhec99Y/lPWMO3m5mZ07949UVSR/TSao8R+GvXRcji2zW89t1LYuXNnCAHnVAsNkeeEXc3zUj8d993nPvc5ACfP2QrVtRd8h+NwOByOXOALjsPhcDhyQWEoNQNTEUCcFV5OokQztidMmJD4u/fffz8TpXbo0KFAO/AWVEM4n3jiidDm7HEgGcJoGlvAqS33rl27InqnFDZs2IAuXbokKD3Odtbt98c//vHQvuGGG6JjkyZNCm2jd8pJ0TBOnDgRwitZokWz+XlLr7SVyomwZMvUqVMBnKTBFi1alGpPv3790Lt374hCBOL+UNs4Y1wVCjjU267Zjh07sGTJklRbpkyZEkJp6+vrw/tKKb744ouhzRnhADB79uzo9YgRI0L7ueeeA5CUUSqF1tZWnDhxIrreQEzbKe3D4b56nXiM25xSLbJS2Lt3b6CveE6rXA/TujxngJhSAoD58+eHto23rH1jYdoqUcPXSkO+eUwrpcWqBPa5rJR59+7dw/2GaUL9DZbaUSpQ1TC++c1vhrbp3q1bty7S8WsP+A7H4XA4HLnAFxyHw+Fw5AJfcBwOh8ORCwrjw2lqasJvfvObyPcAxBIhDz/8cHRs4MCBoa1hwRwmaMrJWWUvdu/eHbhtljVRiRPmmD/96U9Hx7SuCdtnYbpZpW0GDx6MqqqqxHey7I76kJj/VS6Z/Rb2uSyyNsBJ7ti4ZA4h1dBr7huVllF/y8SJExOfXbVqFe65555Ue7Zs2YIPP/wQ//mf/xm9zxJJ6vtjvltr87Dd5k/atGlT5K8rhUmTJgXfIfcNSwkBwOjRo0Nb/SQaws3yKPbZrH6ThoYGDB06NCH7w6HPqjzNY1xD3S30GADGjBkD4GSIexbF8RMnToR+4N/U+c4+XFVA1uv45ptvhraFTGt/loKVS9Df4BB4LQ/AflmVIOKQ8UcffRRAdtkfDj9nlXcFK+CzjxCI0wCAWCHeJImy+mnPJNrfAofD4XB8JOALjsPhcDhyQWEotZUrV2LPnj2JynUW0gckQwF5G6sZzxxCaaGPSm2UQnV1dciiZzqKQ62BuACaVifUcGeBDxQ8AAAdEklEQVQO8bVjWYuMDRkyBP369UuEjHO2s4bXMm2latlMFRi9lLVYVEtLS6AbmVZQuo8pNi1kpTSKqQsAp/pGqy2WQkNDA/r375+gdZhi1N/ncO6rr746OsYq13ZOWZWrO3ToEPqWw3OVyuCQbS0YpqHg/NtWADBrQbiuXbuie/fuibHIdLN+F6cX8HUBYlUCC8lvqxJtW+jZs2cYE3ytuBgcEJe8Pu+886Jjqh7NRQ2N/sua3d+5c2d07do1QfcyNCyZw/s1/Jr7dOHChQCyF4MDTs1J/hstssYuAQ0nVzULnuOmMp4lBeNMw3c4DofD4cgFvuA4HA6HIxf4guNwOByOXFAYH87WrVvRoUOHBO/JvOmAAQOiYxwWrTw7hzBaaGlTUxPuu+++VFtmzJgReH/2G2kIJXPzqlKr/C8fz8rBGyorK1FVVZXwa6hvglFOxZftNluyVrW8+uqrgy+J+1/DojnkW/1yKjXDXLVd76xcvEmUKIfN/iX1/ZkyL4CEtAn7CUzmJqt/q7q6OoRZs0SKXjceRzfeeGN0TK8D+8YsFHbNmjV47LHHUu1paWlpUz2Zr5tWyuUxpZJI7MO0fspa1dLCkAHgK1/5Snj/2WefjT7HaRDcVtuA2G9hxz744INMMkSl5hT7edX3xtJWr7/+enTs5ZdfDu2sfWKYPHlyGK9cRVjDwHlMaVj2008/Hb1mJXcLo9d51x7wHY7D4XA4ckG773As8sJWb43c4h2PJrxxJIbucPjJ1RKr7Km/VAKovd9Wsh2QjEzhJyBN4tQdBj9J2TnZuabZY/ZnjZYCkklrDLbbvtP6P80Wfsria6XiqRzdp0KmWmeFP2v9ZFGGWftGd8Y8VjQZkHc4GmXFyXq2y7JkzDRbOBqQv0d3SDyOVNhUd2P8JGu/s3Hjxkz22DjWBETuGx3TPG80upGvt9lpkZJptnBCK8+vrEmsQHLXy+dluwGzK80eG1+6i+H+0DnEdZx0DJfbkafZwmwI3zeUCSmXSKoRbXw/svmVdv/LBa3tjMbGxlYAuf5rbGwsjC1Fs6dIthTNniLZUjR7imRL0ewpki3l7MkDHVpbM+p5nyE0Nzdj3rx5qKurS6zSf2gcPHgQmzZtwuzZsxOVFfO2pWj2FMmWotlTJFuKZk+RbCmaPUWyJYs9eaDdFxyHw+FwfDTgQQMOh8PhyAW+4DgcDocjF/iC43A4HI5c0O5h0e7EK4Y9RbKlaPYUyZai2VMkW4pmT5FsyWJPLmi3+Ljfw8MUi2VPkWwpmj1FsqVo9hTJlqLZUyRbytmTB9p9h1NXVwfgpIRH586dEzL3nDTIsg9ALKeiSVKWHAecSk47fPgwtm3bFn6zlC1f+cpXEjI6QDK5kxMxNblR7eHEMEsoM6mdNHv+7u/+DoMHD04kfnKSGEu1A3GSnn4/lzKwJ6vf/va3+Pd///dUW+6+++5QQZCrhGriG8tyaOkEvcbcr2bPunXrcNNNN6Xa09jYiDFjxuBXv/pVdJzLE7z00kvRsXXr1oW2Xudbb701tC+//PLw+RtuuCHVlq9+9atB9ocTKDnRVKHHNCnv+PHjib/ZunUr7rnnnlR7rrnmGvTt2zch38PlGXScchJuuYq0JgGzY8cOPP7446m2fPe73w3SPJokzOAxruNdK9fymLPx/v777+Pb3/525nHDY0F/g+VhFCoJxAmkdmzt2rWZxs3EiRNDgi+XOVC5KJt3bf2+XmOWNLJz2rt3LxYtWlTSnjzQ7guO3WA6d+6MLl26JHS3eKup28A+ffqEtnY4Z+XqYlBq+2rvDxgwIFyUVooaV10qnqxqt9rDGeWawZxmz+DBgzFixIiytUu4Ng4QZ97rTXXYsGGhrZn2abace+65oU4JTzLVpOLv0boqfN2AuF9P154xY8Zg4sSJid9nTTS9NgzVq+LJyKWvs9hSW1sb/p7HXLkFR2+qqsFXrmZSmj19+/bFgAEDEuOfazfpOOXM/7Z02AxaWyrNlvr6+lCjSW+kDO4PHe+qSsDXXPsp67jRuciLLC/MCi1NznNBj6XZwuXj+Xro3/G80d/Qccz9qP2WB31XCu2+4BgqKyvRrVu3xFMF1+7WJyPuSJ2ofMwupn6mFLp16xYuCj9xPPTQQ9Hn+AnrkksuiY5Nnz49es27ESuyVW5CM0aMGIHx48cnJtVTTz0V2iy7AQCTJk0KbSvcZeA+tr/LassjjzyC+fPnA4ifBlXKhyeHFs7iBQ+IRRFtZ5pVaPCHP/whamtrEwvOc889F9p8DdMwd+7c0DYhzS1btmT6Wy7AxguX3tTZVpYKApI3Dv5bO6ayKqXw6KOPolOnTvjSl74Uvc+CoTqnHnzwwdBesGBBdIwXGSuil7WI4Nlnnx3GBBcSVPkcvu46X8vtlG0s6uJaCnfeeSfOOeecsgu+7tr5u/V3uOCj3TuyXqdf//rX4dryYsAiq0B8vrrg6/zjYms2p7IK4p5JeJSaw+FwOHKBLzgOh8PhyAWFodQqKirQqVOnUCvdYLXKgaSy69KlS0Obt7RAvOU1vrOcgjKjqqoqOOWsJorZyOBtrW5/tZbI8uXLQ9u+U6mWUujYsSM6duyI//3f/43eZ6e9+hvYb6OUEjuijUrLWg+npaUl9C1TaurQbavGjYH7VF//7ne/A1C+ng9j165d6NSpUxQkAMQ0mPqFuI59uRpH5hdT2qsUGhoaMG7cOACxyrP2P9dS0XE7ZMiQ6PXMmTND23yYSh+WQm1tLXr06IE5c+ZE7/NYXbZsWXSMKS5VrubxOmPGDAAnqZt777031Zbq6urgO2L1bL3OTA1r0ILOPx7z5hcqF5DAOHjwIPbv35/4PAdtKK3LVLBSn0x3md2qYF4KXbt2DXOK6Ub1dfJ1T1OnZ0Vuu08pDdce8B2Ow+FwOHKBLzgOh8PhyAW+4DgcDocjFxTGh/PXf/3XGDFiRCKBjzll5jf19d69e0ses3h+jesvBfOZAHGC1ZgxY6LPmb8BSHK6Gut+wQUXhLbxr++99x6efPLJVHvWrVuHo0ePJuqoc+i3hjxysuOKFStK2mb+lazhrf379w8+AM510r5lvlj9FMols4/H/C1ZQ9ibm5tx/PjxBKfNnLry9MyFq++JX5vvplwCJMP8AsDJRFrD448/Hn1u4cKFof3OO+9ExzRHhX1BFnqvPrFSmDJlCmpqahJh6d/5znfatAUANmzYENrqY+R8KvPHZPW1bd68OVwH7hsd0zynNH9Ec814jJx//vkAsl+rUaNGYciQIYm+4d/QsOYRI0aENvuWAUS+Z/OLbtmyBfPmzUu1pbq6OvQN+1d1bHBOoCYIa14O5yyaz7KlpSWzP/JMwXc4DofD4cgFvuA4HA6HIxcUhlLr06cPampqMG3atOh93gKqrhSHVz777LPRsXKyF2k4fPhw2LJyaCPrswHxll4z9dUehtmdNYO9W7duqKysTGyb9+zZE9pKjXCmsdJtEyZMCG3bph88eDCT2kCPHj3C9l+39QymQ5RSU6qGs/KN7jvda6bhxGxbOXpO+4YpGaMMlXYrhRdffDGoJjA1rNJCd9xxR2hryPS7774bvWba8o033gAQU1Ll8NZbb6GyshL33Xdfye/ksQCcoqaA5HjnMOGVK1cCSF7bUli8eHGgy3jeqkIGq2AoPaa0tSl2AKfuDVnt6dixIyoqKhIUE78uF/qsCgV8b7J+yko3Dhw4MIRA898o3ce/oYosKvvFtLnRpFnD6c8kfIfjcDgcjlzgC47D4XA4coEvOA6Hw+HIBYXx4TQ3N6OpqSkhX2NSIUB53lTx5ptvhrZJwJT7PGPVqlWBS926dWt4XzlV5nvVZ8P8MhCHV7/66qsA4jDHcti9ezd27NiR8CWwD+hjH/tYdOwf/uEfQpv7EIh9Eia5s3nzZvzbv/1bqi0LFiwI/DFLb2jfMv+tXLh+lmU4zKeSlf/u0qULunbtmpAR4d8op8Cs441DqK29Z8+eSEaoFN59993A37N8zD/90z9Fnxs8eHBoaz0WPgbEkkO33347gOyqv1VVVejVqxeuvPLK6P3x48eHts4p9oGof4PHsCmGZ71Oq1evDnOJxw2HGgOx30bnx+jRo6PXHJr8ve99D0B2f9uyZcuwcePGROg194f6PFgGSMcwh6rbWNTvLoVJkyYlJJaA2NcGxPNEx6OeN4+bVatWAXBpG4fD4XB8hOALjsPhcDhyQWEotb1792LXrl2JEFYOAdWiR6wCrOWnLYQUyL61NSxatCh8N1MsVrHQwNtYDfVV+o1DSm1rm5VSe/vtt7Ft27YonBSIlY5NvdfA/TFq1KjoGKsC2HY7qwrDkiVLQptDMVUtm0OBVa1ZQ56ZIjKFYg75TkOHDh0SId1MzXC2PhDTaKpCwBnjdk31WpbCrFmzwjXhEFpV+eaQdVW51n5k202tYvfu3RG9UgrTpk3D4MGDMWvWrOh9Dhl/5plnomOs7FFOrdlosazh63V1dUH9g8dNueum80PpO/5bC+HOSptv2LABTU1NiXnL407HIL9WKpJVSOzaNzc3h/DxcqitrQ2FJrlwovat0ZhAst9U9ZsptyKEQxt8h+NwOByOXOALjsPhcDhygS84DofD4cgFhfHhtLS0YPfu3WXDDbViJ/Ov6oO48cYbQ9uqJm7btg0PPvhgqi0TJkwIarj8vRwWCsQhnapkyzy9/baex5EjRzJV2jx69CiOHDmCj3/849H7zPeqn4FlSZTD5fBIk2DJ6qeoqKgI9jOnXU5aQ5WzuXIiEIcC2/XetGlTpHhdCiNHjsSgQYMS8jHst1MunH0RqkB+3nnnJexev349fvzjH6faYnIpQBzurIrBPDZ0TGmVTb52JgGU1U9h9jz33HPR++yH0/HH/aZqyTzGe/funfh8OdTW1gb7+TfVT8Q+K/WT/OQnP4let6XWnjX0t7KyElVVVQkpIbZN0wlYBmj69OnRMVPyBk75V9atW4enn3461ZaxY8cGSSH2KXJKBgBMnjw5tPV+p/3I/l5TID9+/Php+7P/0PAdjsPhcDhyQbvvcCxixnYA+vRWri44r/LlkkLt6d2e2EqJTtr7/JTJ36t/x0/K+jSiT4dcr8eisuzc0uzRBDADCx/qkzHbpk8//BRofWN/n2ZLqcg63UVxFI3ucPQplHcg1jcW1Zdmj9mvUTscQahjSpM9GfyEaU/NmzdvzmRLqSRhfarkMa39xtdNbbcxZTvLNHtsTmmiKI8VHRvcb/p3bIuNSfv70+kbnhtax4rHhkaJlUt41cjPNHvsPMvdX/Q7uN9sTBi4do31ie0y0mzhXVaPHj1CWxNveZ5w3SK1TT9rfWLXr5zo7hlHazujsbGxFUCu/xobGwtjS9HsKZItRbOnSLYUzZ4i2VI0e4pkSzl78kCH1taMySBnCM3NzZg3bx7q6uoST8J/aBw8eBCbNm3C7NmzEz6HvG0pmj1FsqVo9hTJlqLZUyRbimZPkWzJYk8eaPcFx+FwOBwfDXjQgMPhcDhygS84DofD4cgF7R6l5pxqMewpki1Fs6dIthTNniLZUjR7imRLFntyQbuFK/weHjVSLHuKZEvR7CmSLUWzp0i2FM2eItlSzp480O47HMs+njVrFnr37h2KexlYaViVdDmGXnMdWGXa4vd37dqFF198MfxmKVvuvfdenHvuuQCAhQsXtmkLEOdaLFiwIDqm9vzJn/xJaH/yk58EcFKZ94Ybbki157777sOoUaPw2GOPRcc5Z0MLOHFxKu1Tzua2Y1ltaWxsDMq4rEjL6twA8Prrr4e2Ktmq6veXv/zl0L7pppsAnMzSvvnmmzPZM3r06ISSNl9/VQQeMmRIaKtCAStbmJ1Z++Yzn/lMeHJUFWoG54+1SsyO5uVw7ou1m5ub8dRTT6Xac+mll6K6ujpx/vybeoxfa45KW1nqH374IV555ZVUW2677bagKMHjTxWgWRWB5x6QHDfXX399aJuS+5YtW3DXXXel2jN16lScddZZiXwW7m9W/AZihQxVIOecOJtTu3fvxsKFC1NtOfvss8OY4BwxzVHicVNTUxMd03sj51dZTtuRI0ewY8eOkvbkgXZfcGwr2bt3b/Tv3z9IZhj4wqokCieCaZJYueS6UttXe//cc88NUhN849IbN08APaY3EpMfB4CJEyeelj2jRo3C+eefj1/+8pfRcU5KHT58eHSM5WJUPoUnkh5Ls2XMmDHBfr45aSKcTkiGJjeyvIxJ8Ge1Z/To0Zg4cWKUMAeUrzjKpRt0oeaxor+dZkvfvn3DAmZyIm2B+03HiVZu5AQ+lehJs6e6uhr9+vVL3Kg5uVKPcV9pomW5khFptgwePDhIQfH403lTrt903PBNV8d/mj1nnXUWqqurE5/jPtaHBqahdDHivtF7WJotnTt3DmOCFxw9X57vOt7VHoYmheZB35VCuy84hvr6egwZMiSqRwLEdWRefvnl6JiVRwbihQEAGhoaQvsTn/gEgKQWWyl873vfC/U++Oakf89PR2+//XZJu4E4E952Q5pJXAr//M//jOrq6oR+Ei9ceuPkhYTLBgPA3XffHdqrV68GkL3+zBNPPBHKd3PGspbU5hvphRdeGB3jXQQQZ2k/9NBDAOInxnKYP38+Nm/eHOlqAcBrr70W2qpCcfXVV4d2v379StpiT9hcyrsc+MbBfaNlo/nBSW/4et68A7CFImt9k8OHD+PQoUOJh4G2VC8MfDPSGydrB9rCVC5Tn1FfXx9KRDNT8Itf/CL6HNeP0fE+derU6PWll14a2jZPdcdWCr/97W+xc+fO6HoD8ZzSccrnqsoWpkkInOrDrBn93bt3D+OAdya6o+QFUMdAOQ0+W9Szlt8+k/AoNYfD4XDkAl9wHA6Hw5ELCkOpde/eHZWVlYmSrCtWrAjtpUuXRseYbtAtJpeqNodiVgqrtbU10BdMR6gTj48pv85OeyCmuIynLSciybDyBErNWAkFIMnLssy6UpHs4Ld+yrrd3r17d+CPWWZf6Qcuuas+FKUbmToxiiNL2QaGiqcy/aEhoOwnUGFUvsZGYShfXgrHjh0Lv2tUJZAcm1wCwXyFBqVtmQ412iRr3zQ1NWHfvn2J/ubzV+6fneZKk3Ifjx8/HkBSpLacLdafXNb6iSeeiD7H9Kc6xpU2tsAe4NR5qE+oFOxa/fd//3f0Po+VBx54IDrG1+rrX/96dIzLEPzN3/wNgPJio4xevXoFmpGd/xxoBMQUp94L1RfIPlSjy7O6FM4kfIfjcDgcjlzgC47D4XA4coEvOA6Hw+HIBYXx4WzYsAH79+9PcPGcpHfNNddEx5jT1BLJHKZs5X6zhv7u378/+BXYT8Flg4GYb9b8Ac67AeLwW/P3ZC0V3KdPH/Tt2zcRZskhpewzAOIwTQ3ZZltHjRoF4KRvRstit4Xjx48H+5k3Lpezor4vvVbsI7GwUA07LYUjR460GSZcLvGVQ6g5eRWI/S3mI8saavvmm28GPwX7C3kM62/omHr11Vej15x7Zb4Y9k+Ww+HDh9GpU6cotB+IfUhXXHFFdIxDn3/wgx9ExxYvXhzaloaQdU5961vfCvOF/XvXXntt9Dn2i2pSppZxZ/vMv6IJwKVQX1+P6urqhD+Mx536jDhHTP0hPMYtfyarj/Yb3/hGCBnn79VxzX3NidVA8v7D5bDNT7l9+3a89dZbmWw6U/AdjsPhcDhygS84DofD4cgFvuA4HA6HIxcUxofTo0cP9OzZM5KkAU4JXQIxLwnEvgnNI2He2njxrLkmLFHCcfnjxo2LPseaVJozoBplHJNvfgOWsSiHQ4cO4cCBAwnZE/Y/qD+I81BU2I+5aPs7zaMphYqKisDFs+9FZTg4f0TPU7lpts++O6t/a9++fdizZ09C94q5+Y0bN0bHmOdXnp3HjfmoVDakFE6cOBHGxMUXXxzeV9HXxx9/PLRVdoZ9b0A8jqy/s/aN5W+pD40FS1V2iOeIjgn2S5l/Q/W+SuG6664Lv3vLLbeE91Wg86WXXgptzRFSoVXORZk+fTqAZF+XwoABA1BTU5Pof57T6vu74447Qvsb3/hGdIx9cVdddRWAk+NGc6DaAvshWVpHfbbs354zZ050TK8xj2vzA2b1t51J+A7H4XA4HLnAFxyHw+Fw5ILCUGojR47E8OHDE2GNrPqrYbtr1qxpsw3ElIpJq6j8TCmMGTMm0Dwsy6LhqPyb27Zti46VK4lg9FvWcNtdu3bh2LFjCYqD/57DWfW1hkzyVt1kRrJSanv27AnKtiwtpHVNOGRdJXmU/mKJHqMeVeG5FN555x1s3749QY1xCK0qGjNtprVBmCZ85JFHAGSnYg8fPhwoJlaYfv7556PPcVi4hkxr6Qq2x74za7htZWUlqqqqyioya8kLHgdr166NjpmCOnBKjX3btm2J72gLN998cwhd5uv/85//PPocU3Qq1zJp0qToNYd0z5w5E0BS4boU+vXrh9raWlx00UXR+0w7KRXL11Tny+c///nQ/uxnPwvgJOU9b968VFtYEokpOC7bAcRh2jomX3jhheg1h9cbFZ9VaudMwnc4DofD4cgFvuA4HA6HIxf4guNwOByOXFAYH46VmNaQTw435FIFQOwnUZl5rqRoPO22bdsSFf7agvG7ZpdBpTbYF6K+p3JSE8Zlb9myJRPH27t3b/Tu3TsR8snhzeonYSgXzfIWWStrGg4cOBDCnJlv1hIEHOqs5QG0/DT3sX2nVnsshZaWFlRUVCR8SOwD0tLk7DfRcG4eHxqinIYjR44E/wqH+2p474wZM0JbeXo9b7ZBx38axo0bh5qamoTs0LJly0Jb/UssyTRt2rToGPtw3n33XQDZJYhWr14dfAgcMq+STOzP00qrS5YsiV5/+tOfDm2bf1nCkIFTJaYVnN6g1Ye5wmhb32ewe1jWMOThw4cHnxjbpHOKfTAaIq5lLvizNv727NmTkJXKG77DcTgcDkcu8AXH4XA4HLmgMJRac3MzevXqlQg9ZvVUrvAHxLSVVmVkSs22l0otlILRe0CcXT1//vzoc6aYCySpEa34yeGus2fPBnCSvlFF3rZw6623oqGhIUH/MP2iKttsq4aM82eNbjp8+HCkolwKo0ePDpQUn6Mq6zL9p/2uygdMsRltqaHTpTBr1izU19cn1ACYplNKj6kZVc9lusfsPnHiRKaw8crKynDePFaHDx8efY77TWkXpQb5WlkY/IkTJzKF+H/44Yfo2LFjgtKzTHggScUyTa3Z60wTGvWYNdVgw4YNYR7yOeu8YbpT0wb0PNh2o4qyqkLs3LkT3bp1S6QzlKuKyTStKizw/ceodr4/lENVVVU4N+5/rVDMtqkKwpQpU6LXVpEVOOWW2LBhQ6YQ9jMJ3+E4HA6HIxf4guNwOByOXNDulJptPy0iRQXrtEASg7fmTKEBcYSHZfEaPaG/obbwVpij3zQih7N9NbpO6QD+TqMjLHoszR4T6dTsYt7i6/abo3WUpuTMe6OKjO5Is4UpiHIRL0yjabSNinky/Wb9ZP+n2WM0oFJT/FojGJk61L/j3zMhR/s/zRY+zhScjhtWClCaVGksvlZmh2Xgp9ljv6sZ5nw9VNGB7dZxw7ZqEcE0W3ge8/cohcVUlUbs6bXi87K+MTHONHv+P9Fa3Feq9sD3H+tDO+c0WyziD4jPSec795XeX5Ty5dcWwZc2p3JBazujsbGxFUCu/xobGwtjS9HsKZItRbOnSLYUzZ4i2VI0e4pkSzl78kCH1lYRLMoZzc3NmDdvHurq6jI79f+/OHjwIDZt2oTZs2cnHMl521I0e4pkS9HsKZItRbOnSLYUzZ4i2ZLFnjzQ7guOw+FwOD4a8KABh8PhcOQCX3AcDofDkQt8wXE4HA5HLvAFx+FwOBy5wBcch8PhcOQCX3AcDofDkQt8wXE4HA5HLvg/mHRCXiraWpQAAAAASUVORK5CYII=",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x31c063310>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "###############################################################################\n",
    "# Evaluation\n",
    "\n",
    "report = classification_report(Y_test, predict(classifier, X_test))\n",
    "println(\"Logistic regression using RBM features:\\n$(report)\")\n",
    "report2 = classification_report(Y_test, predict(logistic_classifier, X_test))\n",
    "print(\"Logistic regression using raw pixel features:\\n$(report2)\\n\")\n",
    "\n",
    "###############################################################################\n",
    "# Plotting\n",
    "\n",
    "figure(figsize=(4.2, 4))\n",
    "for i in 1:size(rbm[:components_], 1)\n",
    "    comp = rbm[:components_][i, :]\n",
    "    subplot(10, 10, i)\n",
    "    imshow(reshape(comp, 8, 8), cmap=get_cmap(\"gray_r\"),\n",
    "           interpolation=\"nearest\")\n",
    "    xticks(())\n",
    "    yticks(())\n",
    "end\n",
    "\n",
    "suptitle(\"100 components extracted by RBM\", fontsize=16)\n",
    "subplots_adjust(0.08, 0.02, 0.92, 0.85, 0.08, 0.23)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.4.5",
   "language": "julia",
   "name": "julia-0.4"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.4.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
